使用双指针每次当0的个数达到k,开始反转,返回最大。
- class Solution {
- public int longestOnes(int[] nums, int k) {
- int ans=-1;
- for(int i=0,j=0,cnt=0;i< nums.length;i++){
- if(nums[i]==0)cnt++;
- while(cnt>k){
- if(nums[j]==0)cnt--;
- j++;
- }
- ans=Math.max(ans,i-j+1);
- }
- return ans;
- }
- }
总结:双指针很常用,不能忘记~