考察的知识点:栈的基本操作;

解答方法分析:

  1. 声明一个栈 s 和一个结果数组 ans,并初始化结果数组为全-1。
  2. 遍历体重数组 weights,对于每个体重,执行以下操作:检查栈是否为空,如果不为空并且当前体重大于栈顶索引对应的体重,执行以下操作:更新结果数组 ans 中栈顶索引对应的值为当前索引减去栈顶索引。将栈顶索引出栈,将当前的索引入栈。
  3. 返回更新后的结果数组 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;
    }
};