leetcode-5935-利用前缀和的思想(个人称呼为递增前缀和递减前缀)的思想来预处理进行打表

双百通过
leetcode-5935-利用前缀和的思想(个人称呼为递增前缀和递减前缀)的思想来预处理进行打表_第1张图片
代码如下:

class Solution {
    public List<Integer> goodDaysToRobBank(int[] security, int time) {
        int len = security.length;

        // 包括当前这个数
        int[] increase = new int[len];
        int[] decrease = new int[len];
        increase[0] = 1;    
        decrease[0] = 0;    // 注意decrease的初值为0,表示不包含自身,表示之前有多少个比自己大的

        for(int i=1;i<len;i++){
            if(security[i]>=security[i-1]){
                increase[i] = increase[i-1]+1;
            }else{
                increase[i] = 1;
            }

            if(security[i]<=security[i-1]){
                decrease[i] = decrease[i-1]+1;
            }else{
                decrease[i] = 0;
            }
        }

        List<Integer> res = new ArrayList<>();
        for(int i=0;i<len;i++){
            //System.out.println(decrease[i]);
            boolean flag_1 = false;
            boolean flag_2 = false;
            boolean flag_3 = false;
            if(i>=time && (i+time)<len){
                flag_1 = true;
            }
            if(decrease[i]>=time){
                flag_2 = true;
            }
            if(flag_1){
                if(increase[i+time]-increase[i]>=time){
                    flag_3 = true;
                }
            }
            if(flag_1&&flag_2&&flag_3){
                res.add(i);
            }
        }
        return res;
    }

}

你可能感兴趣的:(算法,leetcode,算法,职场和发展)