滑动窗口算法本质就像卷尺拉伸缩短测量不断的拉伸或伸缩来获取一个满足的条件,因为每次只拉伸一格,所以可以减少窗口中的内容重复计算问题
剑指 Offer 57 - II. 和为s的连续正数序列 https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
public int[][] findContinuousSequence(int target) { //左边界 int i=1; //右边界 int j=1; int sum = 0; List<int[]> list = new ArrayList<>(); while(i<target){ if(sum<target){ //目标值小于窗口和时右边界向右 sum+=j; j++; }else if(sum>target){ //目标值小于窗口和时左边界向右 sum-=i; i++; }else{ //满足条件记录结果 int[] tmp =new int[j-i]; for(int k=i;k<j;k++){ tmp[k-i] =k; } list.add(tmp); //左边界向右移动 sum-=i; i++; } } return list.toArray(new int[list.size()][]); }