503. 下一個更大元素 II
阿新 • • 發佈:2020-07-24
給定一個迴圈陣列(最後一個元素的下一個元素是陣列的第一個元素),輸出每個元素的下一個更大元素。數字 x 的下一個更大的元素是按陣列遍歷順序,這個數字之後的第一個比它更大的數,這意味著你應該迴圈地搜尋它的下一個更大的數。如果不存在,則輸出 -1。
示例 1:
輸入: [1,2,1] 輸出: [2,-1,2] 解釋: 第一個 1 的下一個更大的數是 2; 數字 2 找不到下一個更大的數; 第二個 1 的下一個最大的數需要迴圈搜尋,結果也是 2。
解題思路:
不會
class Solution { public int[] nextGreaterElements(int[] nums) { int[] res = new int[nums.length]; Stack<Integer> stack = new Stack<>(); for (int i = 2 * nums.length - 1; i >= 0; --i) { while (!stack.empty() && nums[stack.peek()] <= nums[i % nums.length]) { stack.pop(); } res[i % nums.length] = stack.empty() ? -1 : nums[stack.peek()]; stack.push(i % nums.length); } return res; } }
注意: 輸入陣列的長度不會超過 10000。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/next-greater-element-ii
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。