题目
解法一:
使用双指针的方法,但要考虑两种特殊的情况:
- 全为1的情况
- 第一个元素为1,但是后面的不全为1的情况
import numpy as np
class Solution:
def findMaxConsecutiveOnes(self, nums):
i = 0
num = [0]
if nums.count(1) == len(nums):
return len(nums)
for j in range(1,len(nums)):
if i ==0 and nums[i] == 1 :
if nums[j] == 1:
num.append(j-i+1)
else:
num.append(1)
i = j
elif nums[j] == 1:
num.append(j-i)
else:
i = j
return max(num)
if __name__ == '__main__':
nums = []
for i in range(4):
nums.append(np.random.randint(0,2))
print('array = ',nums)
w = Solution()
res = w.findMaxConsecutiveOnes(nums)
print('num = ',res)
缺点:
内存占用大
解法二:
定义两个变量,一个为num表示1的个数,另一个为max_num表示连续1的最大数,遍历整个数组即可
import numpy as np
class Solution:
def findMaxConsecutiveOnes(self, nums):
num = 0
max_num = 0
for i in nums:
if i == 1:
num = num +1
else:
max_num = max(max_num,num)
num = 0
return max(num,max_num)
if __name__ == '__main__':
nums = []
for i in range(4):
nums.append(np.random.randint(0,2))
print('array = ',nums)
w = Solution()
res = w.findMaxConsecutiveOnes(nums)
print('num = ',res)