题解 | #牛的生长情况#
牛的生长情况
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;
}
};
查看12道真题和解析