共计 663 个字符,预计需要花费 2 分钟才能阅读完成。
思路
很奢侈的一个思路就是,程序遍历数组,如果始终都是 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
}
内存占用真的是很多,有点好奇他们用的都是什么解法?不过当初就不纠结这个了。
正文完