题解 | #牛的生长情况#

牛的生长情况

https://www.nowcoder.com/practice/5f67258999bd4e61a361f4d3017a3fd4

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

解答方法分析:

  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;
    }
};

全部评论

相关推荐

彧未sr:查看图片
投递牧原集团等公司10个岗位
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务