zoukankan      html  css  js  c++  java
  • LeetCode 485:连续最大1的个数 Max Consecutive Ones(python java)

    公众号:爱写bug

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

    Given a binary array, find the maximum number of consecutive 1s in this array.

    示例 1:

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

    注意:

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

    Note:

    • The input array will only contain 0 and 1.
    • The length of input array is a positive integer and will not exceed 10,000

    解题思路:

    ​ 记录一个指针向右移动,用一个数记录1的个数,遇1就累加1,遇0就倒置为0。具体见 Java 注释。

    Java:

    class Solution{
        public int findMaxConsecutiveOnes(int[] nums) {
            int temp=0,count=0;//temp记录当前连续1的个数,count记录当前最大连续1的个数
            for (int i=0;i<nums.length;i++){//指针右移
                if(nums[i]==1){
                    temp++;//遇1累加1
                }else{
                    if(count<temp){
                        count=temp;//记录目前最大连续1的个数
                    }
                    temp=0;//遇0倒置为0
                }
            }
            return (count>temp)? count:temp;//返回count、temp中较大的数
        }
    }
    

    注意:

    ​ 返回值必须是counttemp 中较大的一个。明明已经比较了counttemp,并把较大的赋值给count ,很明显是count 更大,为什么还要比较?

    ​ 这是因为还有一种输入数组全为1的情况,此时temp一直累加,从未遇到0,所以count自始至终都不可能得到temp的值。

    python3:

    class Solution:
        def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
            count=temp=0
            for num in nums:
                if num==1:
                    temp+=1
                else:
                    if(count<temp):
                        count=temp
                    temp=0
            return count if count>temp else temp
    
  • 相关阅读:
    【BZOJ1135】[POI2009]Lyz
    【BZOJ5110】[CodePlus2017]Yazid 的新生舞会
    「BZOJ2882」工艺
    【BZOJ3626】[LNOI2014]LCA
    [Wc]Dface双面棋盘()
    【BZOJ3307】雨天的尾巴
    [NOI2012]骑行川藏
    【BZOJ4919】[Lydsy六月月赛]大根堆
    bzoj4184
    3237: [Ahoi2013]连通图 线段树分治
  • 原文地址:https://www.cnblogs.com/zhangzhe532/p/11114666.html
Copyright © 2011-2022 走看看