485.最大连续1的个数
题目:[https://leetcode-cn.com/problems/max-consecutive-ones/description/]
思路:找到一个二进制数中最长连续1的个数,返回最长的1的个数。由于序列中只有0和1,可以看作每个1序列是被0所分割的,所以可以找到两个零的位置,并计算之间的距离,找到最大的值
代码
lass Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int max=0;//连续1的
bool flag=false;//表示是处于计算一段连续1之中
for (auto search=nums.begin(),be=search; search!=nums.end()+1; ++search) {//遍历二进制序列,最大值只能到nums.end()(end指向尾元素的下一个值)
if (*search==1&&!flag) {//找到开头的1
be=search;
flag=true;
continue;
}
if (*search!=1&&flag) {//找到结尾的位置
if (search-be>max) {
max=search-be;
}
flag=false;
}
}
return max;
}
};
反思:1、循环的边界确定,要确保能够完整执行完毕所以情况。

浙公网安备 33010602011771号