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

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

class Solution {
    public int[] nextGreaterElements(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        Stack<Integer> 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;
    }
}

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 4,214评论 1 15
  • 第5-10章 王小波语言简练又犀利,对很多社会问题能给出一针见血的评价。今天读的几章都谈到了同性恋的问题,所以摘抄...
    冰淇淋cathy阅读 60评论 0 0
  • 《门》 这一道门, 一半是光明,一半是黑暗。 一半是热闹,一半是孤独。 一半是过往,一半是现在。 一半是欢笑,一半...
    糖R瑟阅读 128评论 4 2
  • 九劫雷使,我与你同归于尽!”江白羽双目透着极尽的疯狂,一手指天,一手点在眉心,震声怒喝“九星化阳,阳开天道,灭!”...
    8a8e820767f4阅读 70评论 0 0
  • 时间过得真快,又该过春节了。 小时候,等春节,盼春节,只嫌春节来的慢。现在,怎么这么快?转眼又一...
    长溪阅读 163评论 4 3