题目描述:
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: 1,1,0,1,1,1 Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Note:
-
The input array will only contain
0
and1
. -
The length of input array is a positive integer and will not exceed 10,000
解题思路:题目非常清晰,就是要求找到最大的子数组全为1的个数,那么我设立一个临时变量temp一直跟着走,碰到0的时候,让temp与当前res相比较,进行更新,在循环出去的时候,一定切记加上temp与res的比较,因为有可能出现全1的情况,防止没有比较到.(因为我的程序是碰到0了,才开始比较~)详情见代码:
C++代码
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int len = nums.size();
int res = 0;
int temp = 0;
for(int i = 0;i<len;i++)
{
if(nums[i]==1)
{
temp++;
}
else
{
if(temp>res)
{
res = temp;
}
temp = 0; //为0之后就重新计算
}
}
if(temp>res) //必须加上这一行,要不然程序只满足到0才记录
res = temp;
return res;
}
};
python代码
class Solution(object):
def findMaxConsecutiveOnes(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
length = len(nums)
res = 0
temp = 0
for i in range(length):
if nums[i]==1:
temp = temp+1
else:
if temp>res:
res = temp
temp = 0
if temp>res:
res = temp
return res