java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 |
---|

1. 法一,双指针
- 首先用left指针,定位到一个含有1的子区间左边界,然后让right从left位置尝试找到这个子区间的右边界
- 如果已经完成了一个子区间的统计,数组还没有遍历完,让left从right的位置,继续。
- 类似一个滑动窗格

class Solution {public int findMaxConsecutiveOnes(int[] nums) {int left=0,right = 0;int n = nums.length;int ans = 0;for(left = 0;left<n;left++){if(nums[left]==1){for(right = left;right<n&&nums[right]==1;right++);ans = Math.max(right-left,ans);left = right;}}return ans;}
}
2. 法二:变量计数
和双指针类似,当我们发现一个1后,用count变量开始统计个数。如果一个区间统计完成后,数组没有遍历完成,那么记录当前count和已经记录的count谁大,然后count归0重新开始统计下一个区间。

class Solution {public int findMaxConsecutiveOnes(int[] nums) {int ans = 0, count = 0;int n = nums.length;for(int i = 0;i<n;i++){if(nums[i]==1) count++;else{ans = Math.max(ans,count);count = 0;}}ans = Math.max(ans,count);return ans;}
}