LeetCode 485、最大连续 1 的个数

LeetCode 485、最大连续 1 的个数

题目描述

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

示例 1:

输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:

输入:nums = [1,0,1,1,0,1] 输出:2

提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1

思路

  1. 循环遍历数组

  2. 记录数组中遇到0的index的值,如果碰到0就将当前数组的位置标记为index

  3. 而当前连续数的个数就是当前位置减去index值的最大值

  • 可以对数组遍历一次,遍历时需要保存遇到的最后一个 0 的位置 index;

  • 如果遍历到 i 位置的数字是 0,那么更新 index 为当前位置 i;

  • 如果遍历到 i 位置的数字是 1,那么当前区间内共有 i−index 个连续的 1;

  • 记录遍历过程中所有连续的 1 的长度的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
* @lc app=leetcode.cn id=485 lang=java
*
* [485] 最大连续 1 的个数
*/

// @lc code=start
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int maxcount=0;
int count=0;
for(int i=0;i<nums.length; i++){
if(nums[i]==1){
count++;
}else{
maxcount=Math.max(maxcount, count);
count=0;
}
}
return Math.max(maxcount, count);
}
}
// @lc code=end