关于leetcode:485-最大连续-1-的个数

思路

很奢侈的一个思路就是,程序遍历数组,如果始终都是1,后果count也加1,如果遇到0,把count保留到max后而后置零,最初比照count、max哪个大,哪个大输入哪个。

谬误的题解

func findMaxConsecutiveOnes(nums []int) int {
    max := 0
    count := 0
    for index := 0; index < len(nums); index++ {
        if (nums[index] == 1) {
            count++
        } else {
            if (count > max) {
                max = count
                count = 0
            }
        }
    }
 
    if (count > max) {
        max = count
    }
 
    return max
}

错在哪里?看了下没通过的那个测试用例,大略是这样散布的

[1, 1, .... , 0, 1, 1, 1, ... , 0, 1, 1, 1, ... 0, 1, ... ,1]

其实手动画下图就能懂了,最初能够看到 在遇到最初一个0的时候,因为count比 max 小,所以没有被置零,修复很简略,把 count = 0 从这一层循环里挪进去就好了

正确的题解

func findMaxConsecutiveOnes(nums []int) int {
    max := 0
    count := 0
    for index := 0; index < len(nums); index++ {
        if (nums[index] == 1) {
            count++
        } else {
            if (count > max) {
                max = count
            }
            count = 0
        }
    }
 
    if (count > max) {
        max = count
    }
 
    return max
}

内存占用真的是很多,有点好奇他们用的都是什么解法?不过当初就不纠结这个了。

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据