思路
很奢侈的一个思路就是,程序遍历数组,如果始终都是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}
内存占用真的是很多,有点好奇他们用的都是什么解法?不过当初就不纠结这个了。