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、循环的边界确定,要确保能够完整执行完毕所以情况。

posted @ 2018-09-17 17:20  Kipper  阅读(218)  评论(0)    收藏  举报