为了能到远方,脚下的|

fishcanfly

园龄:8年10个月粉丝:0关注:4

[503. 下一个更大元素 II] 单调栈

 

 

 

复制代码
import java.util.ArrayDeque;
import java.util.Deque;

class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.nextGreaterElements(new int[]{
            1,2,1
        });

    }
    public int[] nextGreaterElements(int[] nums) {
        Deque<Integer> stack = new ArrayDeque();
        int[] ans = new int[nums.length];
        int left = 0;

        for(int i=nums.length-1;i>=0;i--){
            int num = nums[i];
            int idx = i;

            while(!stack.isEmpty() &&stack.peek() <= num){
                stack.pop();
            }
            if(!stack.isEmpty()){
                ans[idx] = stack.peek();
                stack.push(num);
                continue;
            }else{
                int x = left;
                for(x= left;x< i && nums[x]<=num;x++);
                left = x;

               if( left < i){
                   stack.addLast(nums[left]);
                   ans[idx] = stack.peek();
               }else{
                   ans[idx] = -1;
               }
               stack.push(num);
            }
        }
        return ans;
    }
}
复制代码

 

本文作者:fishcanfly

本文链接:https://www.cnblogs.com/fishcanfly/p/16302262.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   fishcanfly  阅读(14)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起