题解 | #牛的生长情况#
牛的生长情况
https://www.nowcoder.com/practice/5f67258999bd4e61a361f4d3017a3fd4
考察的知识点:栈的基本操作;
解答方法分析:
- 声明一个栈
s
和一个结果数组ans
,并初始化结果数组为全-1。 - 遍历体重数组
weights
,对于每个体重,执行以下操作:检查栈是否为空,如果不为空并且当前体重大于栈顶索引对应的体重,执行以下操作:更新结果数组 ans 中栈顶索引对应的值为当前索引减去栈顶索引。将栈顶索引出栈,将当前的索引入栈。 - 返回更新后的结果数组
ans
。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param weights int整型vector * @return int整型vector */ vector<int> weightGrowth(vector<int>& weights) { vector<int> ans(weights.size(), -1); stack<int> s; for (int i = 0; i < weights.size(); i++) { while (!s.empty() && weights[i] > weights[s.top()]) { ans[s.top()] = i - s.top(); s.pop(); } s.push(i); } return ans; } };