网站图片不轮播,网业是什么行业,网站建设的几种形式,wordpress 夜间模式跟着carl学算法#xff0c;本系列博客仅做个人记录#xff0c;建议大家都去看carl本人的博客#xff0c;写的真的很好的#xff01; 代码随想录 LeetCode#xff1a;503.下一个更大元素II 给定一个循环数组 nums #xff08; nums[nums.length - 1] 的下一个元素是 nums[… 跟着carl学算法本系列博客仅做个人记录建议大家都去看carl本人的博客写的真的很好的 代码随想录 LeetCode503.下一个更大元素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] 环状问题可以假设后面还有一个一样的数组这样就可以和以前一样操作如果真的复制一个数组性能不好可以假设有一个数组然后取模即可当i size之后后面的元素不需要再入栈了因为我们要求的是下一个最大元素即可当i size如果还继续入栈的话会重复计算一些元素没有必要还影响性能比如[4, 3, 6, 7,5]画图看一下即可 public int[] nextGreaterElements(int[] nums) {int size nums.length;int[] res new int[size];Arrays.fill(res, -1);DequeInteger st new ArrayDeque();for (int i 0; i size 1; i) {while (!st.isEmpty() nums[i % size] nums[st.peek()]) {res[st.pop() % size] nums[i % size];}// st.push(i % size);if (i size)st.push(i);}return res;}