首页 > 其他分享 >503. 下一个更大元素 II

503. 下一个更大元素 II

时间:2023-06-05 16:34:40浏览次数:43  
标签:nums 元素 II vector 数组 更大 503 size




503. 下一个更大元素 II

  • 题目
  • 算法设计:单调栈



 


题目

503. 下一个更大元素 II_c++


 


算法设计:单调栈

前置知识:单调栈原理,请猛击:496. 下一个更大元素 I

和 496. 下一个更大元素 I 这题相同,唯一变化是数组变成了循环数组。

比如输入 [1, 2, 1],循环数组应该返回 [2, -1, 2],而不是 [2, -1, -1],因为拥有了环形属性,最后一个元素 1 绕了一圈后找到了比自己大的元素 2。

503. 下一个更大元素 II_单调栈_02

对于这种需求,思路是将数组长度翻倍:

  • 原数组:2, 3, 1
  • 拉直数组:2, 3, 1, 2, 3, 1

这样原数组的末尾 1,就可以找到右边第一个更大的元素 2。

class Solution {
public:
    vector<int> nextGreaterElements(vector<int>& nums) {
        stack<int> s;
        vector<int> res(nums.size());
        for (int i = nums.size() - 1; i >= 0; i--) // 预先存下数组,实现数组翻倍
            s.push(nums[i]);    
        for (int i = nums.size() - 1; i >= 0; i--) {
            while (!s.empty() && s.top() <= nums[i])
                s.pop();
            res[i] = s.empty()? -1: s.top();
            s.push(nums[i]);
        }
        return res;
    }
};


标签:nums,元素,II,vector,数组,更大,503,size
From: https://blog.51cto.com/u_13937572/6417560

相关文章

  • C# .NET Dictionary 将集合key以ascii码从小到大排序
     .NET不加参数,默认不是按ASCII排序。JAVA默认是按ASCII排序。 Array.Sort(arrKeys,string.CompareOrdinal);按ASCII排序。区分大小写。Array.Sort(arrKeys);排序但不区分大小写。 方法1:publicstaticIDictionary<string,string>AsciiDictionary(IDictio......
  • 602. 好友申请 II :谁有最多的好友
    【题目】在Facebook或者Twitter这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。RequestAccepted表:+----------------+---------+|ColumnName   |Type   |+----------------+---------+|requester_id  |int    ||accepter_id   |......
  • vue3元素标签属性的绑定
    <template> <divv-bind:id="main"v-bind:class="message">aaa</div></template><script> exportdefault{   data(){      return{         message:'active',         main:'mainid' ......
  • 代码随想录算法训练营第二十五天|216. 组合总和 III、17. 电话号码的字母组合
    【参考连接】216.组合总和III【注意】1.组合不强调元素之间的顺序。【代码】1classSolution(object):2def__init__(self):3self.res=[]4self.sum_now=05self.path=[]6defcombinationSum3(self,k,n):7......
  • winows 下iis+nginx +php 部署
    我们服务器使用的server2008,由于iis里还有asp.net网站,php就想用iis做代理转发到nginx来处理请求。第一步:我为了省事,直接安装的phpstudy 下载地址:https://www.xp.cn/第二步:安装好后,设置运行fast-cgi,可以使用以下命令做bat,指定端口运行fast-cgi,我指定端口为9003ECHOSt......
  • 对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一
    /*对一个二维数组中的数据排序,方法如下:将整个数组中值最小的元素所在行调整为数组第一行,将除第一行外的行中最小元素所在行调整为第2行,将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推*/   #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN......
  • ICPC2017网络赛(乌鲁木齐)H: Skiing (SPFA最长路)
    H:Skiing timelimit1000msmemorylimit131072KB iiInthiswinterholiday,Bobhasaplanforskiingatthemountainresort.ThisskiresorthasMdifferentskipathsandNdifferentflagssituatedatthoseturningpoints.Thei-thpathfromtheS-thfl......
  • 两序列相乘的第k大元素
    4875:第k大数时间限制:10Sec  内存限制:128MB提交:63  解决:21[提交][状态][讨论版]题目描述有两个序列a,b,它们的长度分别为n和m,那么将两个序列中的元素对应相乘后得到的n*m个元素从大到小排列后的第k个元素是什么?输入输入的第一行为一个正整数T(T<=10),代表......
  • 一图归纳三大种类矩阵范数:诱导范数,元素范数,Schatten范数,涵盖谱范数,2范数
    转载自:https://blog.csdn.net/qq_27261889/article/details/87902480......
  • 伪元素显示变量值的方法
    1.使用attr引用父元素属性<lidata-name="小明">li::after{content:attr(data-name);}2.非content属性可以直接引用css变量<listyle="--width:40px"></li>li::after{content:attr(data-name);width:var(--width)}3.co......