思路上就是一遍遍历。
先上一个错误代码
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int i=0,j=0;
for(vector<int>::iterator it=nums.begin();it!=nums.end();it++)
{
if(*it==1)
i++;
else
if(i>j)
{
j=i;i=0;//这里错了,不管是否i>j,都要进行一步i=0;
}
}
return j;
}
};
再上一个不够简练的代码
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int i=0,j=0;
for(vector<int>::iterator it=nums.begin();it!=nums.end();it++)
{
if(*it==1)
i++;
else
{
if (i>j)
j=i;
i=0;
}
}
return i>j?i:j;
}
};
使用三元运算可以适当简化;
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int count=0,result=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==1)
count++;
else
{
result=count>result?count:result;
count=0;
}
}
return count>result?count:result;
}
};
如果单从代码行数看,把比较的步骤放在if语句里可能短一点
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int count=0,result=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]==1)
{count++;result=count>result?count:result;}
else
count=0;
}
return result;
}
};