题解 | #单调栈#

单调栈

http://www.nowcoder.com/practice/ae25fb47d34144a08a0f8ff67e8e7fb5

这个内存使用和运行时间都击败了0.00%的人也太真实了吧 晕死.......



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int一维数组 
     * @return int二维数组
     */
    public int[][] foundMonotoneStack (int[] nums) {
        // write code here
        int len=nums.length;
        int[][] arr=new int[len][2];
        Stack<Integer> stacks=new Stack<>();
        Stack<Integer> orders=new Stack<>();
        int times=0;
        int index=0;
        while(index!=len){
            if(stacks.empty()){
                arr[index][0]=-1;
                stacks.push(nums[index]);
                orders.push(index);
                index++;
            }else{
                if(nums[index]>stacks.peek()){
                    arr[index][0]=orders.peek();
                    stacks.push(nums[index]);
                    orders.push(index);
                    index++;
                }else{
                    while(nums[index]<=stacks.peek()){
                    
                        stacks.pop();
                        orders.pop();
                        if(stacks.empty()){
                            break;
                        }
    
                    }
                }
               
                // if(!stacks.empty()){
                //     arr[index][0]=orders.peek();
                //     stacks.push(nums[index]);
                //     orders.push(index);
                // }
            }
        }
        stacks.clear();
        orders.clear();
        index=len-1;
        while(index!=-1){
            if(stacks.empty()){
                arr[index][1]=-1;
                stacks.push(nums[index]);
                orders.push(index);
                index--;
            }else{
                if(nums[index]>stacks.peek()){
                    arr[index][1]=orders.peek();
                    stacks.push(nums[index]);
                    orders.push(index);
                    index--;
                }else{
                    while(nums[index]<=stacks.peek()){
                        stacks.pop();
                        orders.pop();
                        if(stacks.empty()){
                            break;
                        }
                    }
                }
                
            }
        }
        return arr;
        
        

    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务