题目:
题解1:直接看代码就好了哈,思路还比较清晰
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
/*解法1:时间复杂度0(n),空间复杂度0(1)*/
int max=0,count=0;
for(int i=0;i<nums.size();++i)
{
if(nums[i]!=0)count++;
else
{
if(count>max)max=count;
count=0;
}
}
if(count>max) max=count;
return max;
}
};
题解2:双指针法
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
//解法2:快慢指针
int max=0,slow=0,fast=0,size=nums.size();
while(slow<size)
{
fast=slow;
int count=0;
//快指针用于统计连续1的个数,遇到0则一次统计结束,fast指向0之后的1的下标
while(fast<size&&nums[fast++]==1)
count++;
if(count>max)max=count;
slow=fast;//更新慢指针,慢指针指向0之后的1的下标
}
return max;
}
};