乐趣区

关于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
}

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

退出移动版