官解:
为了得到数组中最大连续 111 的个数,需要遍历数组,并记录最大的连续 111 的个数和当前的连续 111 的个数。如果当前元素是 111,则将当前的连续 111 的个数加 111,否则,使用之前的连续 111 的个数更新最大的连续 111 的个数,并将当前的连续 111 的个数清零。
遍历数组结束之后,需要再次使用当前的连续 111 的个数更新最大的连续 111 的个数,因为数组的最后一个元素可能是 111,且最长连续 111 的子数组可能出现在数组的末尾,如果遍历数组结束之后不更新最大的连续 111 的个数,则会导致结果错误。
刚开始做的答案:
class Solution {public int findMaxConsecutiveOnes(int[] nums) {int count = 0;for(int i = 0;i <= nums.length;i++ ){if(nums[i] == 1){count++;if(nums[i+1] != 1){System.out.println(count);}}}System.out.println(count);return count;}}
最后正确的答案:
class Solution {public int findMaxConsecutiveOnes(int[] nums) {int count = 0;int maxCount = 0;for(int i = 0;i < nums.length;i++ ){if(nums[i] == 1){count++;}else{maxCount = Math.max(maxCount,count);count = 0;}}maxCount = Math.max(maxCount,count);return maxCount;}}