#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++