给定一个二进制数组 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 <= 105

nums[i] 不是 0 就是 1.

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/max-consecutive-ones

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.todo;

/**

* 485. 最大连续 1 的个数

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

* 力扣

* @author wen.lei@brgroup.com

*

* 2022-2-26

*/

public class MaxConsecutiveOnes {

/* 示例 1:



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

输出:3

解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

示例 2:



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

输出:2





提示:



1 <= nums.length <= 105

nums[i] 不是 0 就是 1.*/

/**

* 遍历数组,维护当前最大1的个数和最大连续1的个数,返回max

* @param nums

* @return

*/

public int findMaxConsecutiveOnes(int[] nums) {

int currentConsecutiveOneSize=0;

int maxConsecutiveOneSize=0;

for(int num:nums) {

if(num==1) {

currentConsecutiveOneSize++;

//性能考虑,1连续时没更新最大值,连续中断更新或最后更新1次即可

}else {

//遇到0,连续中断,更新最大值

maxConsecutiveOneSize=Math.max(maxConsecutiveOneSize, currentConsecutiveOneSize);

currentConsecutiveOneSize=0;

}

}

//可能全都是1或最后一段全是1

maxConsecutiveOneSize=Math.max(maxConsecutiveOneSize, currentConsecutiveOneSize);

return maxConsecutiveOneSize;

}

}
package test.leecode.number;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.todo.MaxConsecutiveOnes;

/**

* @author wen.lei@brgroup.com

*

* 2022-2-25

*/

public class MaxConsecutiveOnesTest {

@Test

public void test() {

MaxConsecutiveOnes test = new MaxConsecutiveOnes();

int[] nums0=new int[] {0,0,0,0,0};

Assert.assertEquals(0, test.findMaxConsecutiveOnes(nums0));

int[] nums1=new int[] {1,0,0,0,0};

Assert.assertEquals(1, test.findMaxConsecutiveOnes(nums1));

int[] nums11=new int[] {0,0,0,0,1};

Assert.assertEquals(1, test.findMaxConsecutiveOnes(nums11));



int[] nums2=new int[] {1,1,0,0,0};

Assert.assertEquals(2, test.findMaxConsecutiveOnes(nums2));

int[] nums21=new int[] {1,0,1,1,0};

Assert.assertEquals(2, test.findMaxConsecutiveOnes(nums21));

int[] nums22=new int[] {1,0,0,1,1};

Assert.assertEquals(2, test.findMaxConsecutiveOnes(nums22));



int[] nums3=new int[] {0,0,1,1,1};

Assert.assertEquals(3, test.findMaxConsecutiveOnes(nums3));

int[] nums31=new int[] {1,0,1,1,1};

Assert.assertEquals(3, test.findMaxConsecutiveOnes(nums31));

int[] nums32=new int[] {1,1,1,0,1};

Assert.assertEquals(3, test.findMaxConsecutiveOnes(nums32));



int[] nums6=new int[] {1,0,1,1,1,1,1,1};

Assert.assertEquals(6, test.findMaxConsecutiveOnes(nums6));

int[] nums7=new int[] {1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0};

Assert.assertEquals(7, test.findMaxConsecutiveOnes(nums7));

}

}