最大连续1的个数

  1. 最大连续1的个数
    1. 题目:
      1. 解法一:滑动窗口
      2. 解法二:数组遍历
        1. 思路:
      3. 比较

最大连续1的个数


题目:

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

示例 1:

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

  • 输入的数组只包含 0 和1。
  • 输入数组的长度是正整数,且不超过 10,000。

解法一:滑动窗口

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int max=0; //连续最的的个数
for(int left=0,i=0;i<nums.length;i++){ //遍历数组
if(nums[i]==0){ //如果为0,窗口的位置改变,重新确定窗口
left=i+1;
}
max=Math.max(max,i-left+1); //与上一个窗口进行比较,得到最大的值
}
return max;
}
}

解法二:数组遍历

思路:

  • 用一个计数器count记录1的数量,另一个计数器maxCount记录当前最大的1的数量;

  • 当遇到1时,count++;

  • 当遇到0时:
    (1)将count与maxCount进行比较,maxCount记录较大值;(2)将count设定为0。

  • 返回maxCount。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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 += 1;
    } else {
    maxCount = Math.max(maxCount, count);
    count = 0;
    }
    }
    return Math.max(maxCount, count);
    }
    }

    比较

  • 第二种方式利用了遍历数组的方式,耗时短、内存消耗少。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2113132982@qq.com

文章标题:最大连续1的个数

文章字数:349

本文作者:南邮石磊

发布时间:2020-10-12, 19:37:47

最后更新:2020-10-12, 20:03:13

原始链接:https://southpost.github.io/2020/10/12/%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏