美文网首页
2021.3.6每日一题

2021.3.6每日一题

作者: Yaan9 | 来源:发表于2021-03-06 09:11 被阅读0次

503. 下一个更大元素 II

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。

示例 1:

输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数; 
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

题解

使用单调栈,栈中存储元素的下标。结果数组初始化都为-1。复制一个nums数组两遍,这样就只需一次遍历。判断栈顶元素和当前元素的大小
若栈顶元素 > 当前元素:当前元素入栈
若栈顶元素 < 当前元素:弹出栈顶元素,并记录栈顶元素的下一个更大元素为当前元素

    public int[] nextGreaterElements(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        Arrays.fill(res, -1);
        Deque<Integer> stack = new ArrayDeque<>();
        for (int i = 0; i < 2 * n; i++) {
            int curNum = nums[i % n];
            while (!stack.isEmpty() && curNum > nums[stack.peekLast()]) {
                res[stack.removeLast()] = curNum;
            }
            if (i < n) {
                stack.addLast(i);
            }
        }
        return res;
    }

相关文章

  • 2021.3.6每日一题

    503. 下一个更大元素 II[https://leetcode-cn.com/problems/next-gre...

  • Day 4 Project 我的微信好友

    附:每日一题

  • 2021.3.6

    好好爱自己 不以他人喜而喜 不以他人忧而忧 豁然开朗篇

  • 2021.3.6

    早上起来跟桃桃崽在被窝里玩,叫她说happy,反复几次竟然学会了,小孩子的语言天赋真是让人惊喜。 跟老陶出去吃早餐...

  • 2021.3.6

  • 2021.3.6

    晚上闺女又没打卡,我忍不住又发了火,我问她,你喜欢打卡吗?你觉得卡可以不打吗?咱们俩每天因为这个生气你喜欢吗?你认...

  • 2021.3.6

    终于迎来了开学的第一个双休日,时间过得真快,开学已经过了一个星期了。 多亏昨天多辛苦了一下,把作业全部做完了,...

  • 2021.3.6

    成功克服拖延症,趁着热情还在把准备材料写完了,一身轻松~

  • 2021.3.6

    落地真经严格就是爱,放纵既是害 目标确认 目标:油卡目标:11完成✅0张 产值目标153000,台次目标100台。...

  • 2021.3.6

    感谢单位这么闲还给开这么多工资 感谢这几年遇到的所有人和事情 人人是好人 事事是好事

网友评论

      本文标题:2021.3.6每日一题

      本文链接:https://www.haomeiwen.com/subject/nkejqltx.html