- 题目要求:
-
思路:
- 1出现的次数为,两个0之间,或是数组的头到第一个0,最后一个0到数组的尾
- 所以定义一个times,记录1出现的次数,初始值为0,定义一个index,记录第一个1出现的位置,初始值为0,遍历数组,当出现一个0时,用0出现的下标减去index,把减完的这个值与times做比计较,把较大的赋给times。
- 遍历结束后,index当前的值是最后一次0出现的位置+1,所以在数组中index与其之后1的个数没有计算,用数组长度-index,与times做比较,把较大的赋给times
- 核心代码:
# index记录每一次连续出现的第一个1的位置,初始值为数组的头也就是0
index = 0
# 用来记录1连续出现的最多的次数
times = 0
# 遍历数组,如果值为0时,把当前的下标减掉index,求出当前一串1的个数,把当前的个数与之前记录的出现过的个数比较,把较大的赋给times,index+1,记录下一串出现的连续的1的第一个位置
for i in range(len(nums)):
if nums[i] == 0:
times = max(times,i - index)
index = i + 1
# 数组循环结束之后,index之后出现的1的次数还没有记录,所以用数组长度减掉index
times = max(times,len(nums) - index)
return times
加上判断数组是否为空语句
- 完整代码:
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 0:
return None
index = 0
times = 0
for i in range(len(nums)):
if nums[i] == 0:
times = max(times,i - index)
index = i + 1
times = max(times,len(nums) - index)
return times
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。