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

503. 下一个更大元素 II

时间:2023-03-02 21:06:36浏览次数:38  
标签:nums int 元素 II 一个 数组 更大 503

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

示例 1:

输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数; 
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        /**
        单调栈:
            实现循环数组的话, 就用取模即可
                新开一个数组记录结果
                默认-1
                其他跟单调栈差不多,就是这次栈里面放的是没有找到更大元素 的 下标
         */
        Stack<Integer> stack=new Stack();//里面放的是没有找到下一个更大元素的下标
        int res[] =new int[nums.length];
        Arrays.fill(res,-1);
        int n=nums.length;
        for(int i=0;i<2*n ;i++){
            while(!stack.isEmpty()&&nums[stack.peek()]<nums[i%n]){
              res[stack.pop()]=nums[i%n];
            }
              stack.push(i%n);
        }
        return res;
    }
}

 

标签:nums,int,元素,II,一个,数组,更大,503
From: https://blog.51cto.com/u_14689911/6096742

相关文章

  • [oeasy]python0098_个人计算机浪潮_IBM5100_微软成立_苹果II_VisCalc
    个人计算机浪潮回忆上次内容个人电脑(PC)在爱好者之间疯传人人都有一台计算机从attair-8800到apple-1个人电脑离普通人更近了如果人人都有自己的电脑谁还去用终端连......
  • 496. 下一个更大元素 I
    给你两个没有重复元素的数组nums1和nums2,其中nums1是nums2的子集。请你找出nums1中每个元素在nums2中的下一个比其大的值。nums1中数字x的下一个更大......
  • 关于亚马逊SP-API接口PII申请的一些建议
    网站域名以及你提交的所有资料,不要重复,比如域名,不要你之前申请的时候填写过,被拒绝了,后来申请又填写,这就是资料重复了,资料重复了,你申请公共的亚马逊SP-API开发者PII权限是......
  • 关于quartus II的导入以前的工程,QSF文件出现的错误的解决方案。
    在有时候打开以前的工程,或者别人做好的例程会遇到一些报错信息。具体报错信息如下:     报错信息语句行: 在文件QSF文件中有几行出错,显示错误读取,即不能打开......
  • 解决当前标识(IIS APPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\
    1、问题描述在WindowsServer2019数据中心版中搭建IIS项目,访问的时候出现如下所示的错误:当前标识(IISAPPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0......
  • 使用C#和Selenium将鼠标指针(光标)移动到特定位置或元素
    使用C#和Selenium将鼠标指针(光标)移动到特定位置或元素 我使用Selenium和C#执行单击操作。我可以执行点击操作,但我不能将鼠标指针(光标)移动到特定坐标或特定元素上。Ac......
  • 行星碰撞取剩余元素
    给定一个整数数组asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同......
  • 元素的宽度和高度
    元素的宽度和高度重要: 当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完整大小的元素,你还必须添加内边距,边框和外边距。下面的例子......
  • golang 判断元素是否在切片中
    在Go中,可以使用类型为 map[T]bool 的映射来判断切片中是否包含某个元素。例如,假设你想要判断整型切片 s 中是否包含元素 x。你可以这样做://声明一个名为m的映......
  • 数组元素的指针变量
    数组元素的指针变量和数组名(作为地址)等价  在使用中,[]就是*()的缩写 为啥arr==&arr[0]&arr[0]==&*(arr+0)==arr+0==arr指向......