#include <cstring>
#include <stack>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param weights int整型vector
* @return int整型vector
*/
vector<int> weightGrowth(vector<int>& weights) {
// write code here
int n = weights.size();
vector<int>ve(n, -1);
stack<int>ss;
for (int i = n - 1; i >= 0; --i) {
while (ss.size() && weights[ss.top()] <= weights[i])
ss.pop();
if (!ss.empty())
ve[i] = ss.top() - i;
ss.push(i);
}
return ve;
}
};
一、题目考察的知识点
单调栈
二、题目解答方法的文字分析
如果栈不空,且栈顶元素比进栈元素小,栈顶元素出栈并进行下一轮比较,直到元素可以入栈,入栈的是下标
就相当于把元素看作是人,每个人往右边看,看到的第一个比自己高的人
三、本题解析所用的编程语言
c++

京公网安备 11010502036488号