• LeetCode最小栈总结


    962.最大宽度

    题目:

    给定一个整数数组 A,坡是元组 (i, j),其中  i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i。
    找出 A 中的坡的最大宽度,如果不存在,返回 0 。
     1 class Solution {
     2    public int maxWidthRamp(int[] A) {
     3     Deque<Integer> stack=new ArrayDeque<>();
     4     int res=0;
     5     for(int i=0;i<A.length;i++){
     6         if(stack.isEmpty() || A[stack.peek()]>A[i]){
     7             stack.push(i);
     8         }
     9     }
    10     for(int i=A.length-1;i>=0;i--){
    11         while(!stack.isEmpty() && A[stack.peek()]<=A[i]){
    12             int cur=stack.pop();
    13             res=Math.max(res,i-cur);
    14         }
    15     }
    16     return res;
    17 }
    18 
    19 
    20 }

    1124.表现良好的时间段

    题目:

    给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。
    我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。
    所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。
    请你返回「表现良好时间段」的最大长度。
     
     
     
    分析:这里的题意可以转化成上题,即
    给定一个整数数组 A,连续每天干活时长是元组 (i, j),其中  i < j 且 A[i] < A[j]。这样表现良好的时间段为j -i,
    找出 A 中表现良好的时间段,如果不存在,返回 0 。
     
    class Solution {
        public int longestWPI(int[] A) {
       Deque<Integer> stack=new ArrayDeque<>();
        int res=0;
    
        for(int i = 0; i < A.length; i ++){
            A[i] = A[i] > 8 ?  1:-1;
        }
        int[] preSum = new int[A.length+1];
        preSum[0] = 0;
        for(int i = 1; i <= A.length; i ++){
            preSum[i] = preSum[i-1]+A[i-1];
        }
        for(int i=0;i<preSum.length;i++){
            if(stack.isEmpty() || preSum[stack.peek()]>preSum[i]){
                stack.push(i);
            }
        }
        for(int i=preSum.length-1;i>=0;i--){
            while(!stack.isEmpty() && preSum[stack.peek()]<preSum[i]){
                int cur=stack.pop();
                res=Math.max(res,i-cur);
            }
        }
        return res;
           
    
        }
    }
     
     
     
  • 相关阅读:
    java获取Mp3播放时长
    angular ajax的使用及controller与service分层
    mysql数据库不能远程访问的问题
    linux安装ant
    jquery中,使用append增加元素时,该元素的绑定监听事件失效
    类变量与实例变量
    ajax两张传输数据方式
    jquery的.html(),.text()和.val()方法
    如何在sublime text上快速访问html页面?
    java学习笔记之线程2wait和notifyAll
  • 原文地址:https://www.cnblogs.com/moonyaoo/p/13022636.html
Copyright © 2020-2023  润新知