做一个公司的网站应做哪些准备工作内容,长春火车站照片,滁州网站建设价格,塑胶托盘东莞网站建设目录 503. 下一个更大元素 II
题目描述#xff1a;
实现代码与解析#xff1a;
单调栈
原理思路#xff1a; 503. 下一个更大元素 II
题目描述#xff1a; 给定一个循环数组 nums #xff08; nums[nums.length - 1] 的下一个元素是 nums[0] #xff09;
实现代码与解析
单调栈
原理思路 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) {StackInteger 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版含有解析。 Leetcode496. 下一个更大元素 I、503. 下一个更大元素 II单调栈C-CSDN博客