一道滑动窗口的题目,滑动窗口还很容易想到,就是这个测试用例很烦人。
这个全部都是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; } }