LeetCode 第503题:下一个更大的元素II

此题的难度是循环数组,然后最简单的是构建两个一样的数组,那就循环了。当然为了节省空间的考虑,只需要用%来模拟即可。

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        Stack stack = new Stack<>();
        for(int i = 2 * n - 1; i >= 0; i--){
            while(!stack.isEmpty() && stack.peek() <= nums[i % n]){
                stack.pop();
            }
            res[i % n] = stack.isEmpty() ? -1 : stack.peek();
            stack.push(nums[i % n]);
        }
        return res;
    }
}

你可能感兴趣的:(LeetCode 第503题:下一个更大的元素II)