当前位置: 首页 > news >正文

LeetCode:503. 下一个更大元素 II(Java 单调栈)

目录

503. 下一个更大元素 II

题目描述:

实现代码与解析:

单调栈

原理思路:       


503. 下一个更大元素 II

题目描述:

        给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。

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

示例 1:

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

示例 2:

输入: nums = [1,2,3,4,3]
输出: [2,3,4,-1,4]

提示:

  • 1 <= nums.length <= 104
  • -109 <= nums[i] <= 109

实现代码与解析:

单调栈

class Solution {public int[] nextGreaterElements(int[] nums) {Stack<Integer> stk = new Stack<>();int n = nums.length;int[] res = new int[n];Arrays.fill(res, -1);for (int i = 0; i < 2 * n; i++) {int j = i % n;while (!stk.isEmpty() && nums[stk.peek()] < nums[j]) {Integer t = stk.peek();stk.pop();res[t] = nums[j];}stk.add(j);}return res;}
}

原理思路:       

我曾写的C++版,含有解析。

        Leetcode:496. 下一个更大元素 I、503. 下一个更大元素 II(单调栈C++)-CSDN博客

相关文章:

  • 如何在Web开发中创建、删除和修改按钮:实用指南
  • 华为仓颉语言:编程语言的新篇章
  • 说说MQ在你项目中的应用(一)
  • IOS开发学习日记(十六)
  • TXL编程语言环境安装
  • Redis 高可用 sentinel
  • 使用 JavaScript 获取电池状态
  • JavaWeb系列十六: jQuery初步入门
  • OpenAI Sora:我们来自混乱,我们也将回归混乱
  • C++抽象类
  • 【数据分析实战】—预测宠物收养状况数据分析
  • 如何优雅地处理Java中的NoSuchFieldError异常?
  • 32 - 判断三角形(高频 SQL 50 题基础版)
  • sqlite3模块的使用
  • Windows系统下安装RabbitMQ详细步骤
  • 2017-09-12 前端日报
  • Android Volley源码解析
  • eclipse(luna)创建web工程
  • GraphQL学习过程应该是这样的
  • Java编程基础24——递归练习
  • java多线程
  • Java深入 - 深入理解Java集合
  • JAVA之继承和多态
  • JDK 6和JDK 7中的substring()方法
  • swift基础之_对象 实例方法 对象方法。
  • SwizzleMethod 黑魔法
  • tensorflow学习笔记3——MNIST应用篇
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 基于遗传算法的优化问题求解
  • 如何设计一个微型分布式架构?
  • 什么是Javascript函数节流?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 赢得Docker挑战最佳实践
  • 怎么将电脑中的声音录制成WAV格式
  • 终端用户监控:真实用户监控还是模拟监控?
  • #Linux(Source Insight安装及工程建立)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (java)关于Thread的挂起和恢复
  • (ZT)薛涌:谈贫说富
  • (备忘)Java Map 遍历
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • *p++,*(p++),*++p,(*p)++区别?
  • .axf 转化 .bin文件 的方法
  • .equals()到底是什么意思?
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Standard 的管理策略
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @ConfigurationProperties注解对数据的自动封装
  • [ 数据结构 - C++]红黑树RBTree
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [100天算法】-实现 strStr()(day 52)
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [c]统计数字