LeetCode 1438

https://leetcode-cn.com/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/

一道滑动窗口的题目,滑动窗口还很容易想到,就是这个测试用例很烦人。

 

 这个全部都是1的测试用例,如果直接使用滑动窗口做的话会TLE,后来偷鸡用了点小技巧才过了。双100%。

class Solution {
    public int longestSubarray(int[] nums, int limit) {
        int fast = 1;
        int slow = 0;
        int max = 1;
        for(;fast < nums.length; fast++){
//如果这个字符与上一个是一样的话,就不需要进行判断了,因为上一个满/足最大的差值<limit的话,当前这个也会满足。如果不加会导致TLE
            if(nums[fast] != nums[fast-1]){
                for(int j = slow; j < fast; j++){
                    if(Math.abs(nums[fast] - nums[j]) > limit){
                        slow = j + 1;
                    }
                }
            }
            max = Math.max(max,fast-slow+1);
        }
        return max;

    }
}

 

posted @ 2020-05-05 18:20  ZJPang  阅读(227)  评论(0编辑  收藏  举报