1. 程式人生 > 實用技巧 >503. 下一個更大元素 II

503. 下一個更大元素 II

給定一個迴圈陣列(最後一個元素的下一個元素是陣列的第一個元素),輸出每個元素的下一個更大元素。數字 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
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。