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
    
  • 相关阅读:
    java TopK算法
    夫妻过河问题
    Java中数据存储分配
    STM32与ARM代码执行过程
    C中gets()函数与scanf()函数说明
    MRTG开源监控安装手册
    mysql笔记
    windows调用ubuntu下的sublimeText2环境搭建
    linux性能优化
    测试那些事儿—软测必备的Linux知识(一)
  • 原文地址:https://www.cnblogs.com/zhangzhe532/p/11114666.html
Copyright © 2011-2022 走看看