今天的滑动窗口是比较奇特的,仅仅是为了做题而滑动,K是作为判断.
public int longestOnes(int[] A, int K) {int right=0,left=0;while (right<A.length){//右端为零,假设利用K的剩余将0变成1if(A[right++]==0)//每执行一次,K剩余减少K--;//此时K<0,左端为零,整个窗口长度不变,整体向右滑动//K<0只能放在前面,否则left++执行,陷入死循环if(K<0&&A[left++]==0)//右端自K<0后每一次减少,都在此步添加到K中K++;}return right-left;}
窗口只会扩大或者平移,不会缩小,所以最后r - l就是最大窗口长度,只是窗口的起始位置可能并不是所求子数组的起始位置。
