LeetCode_485. Max Consecutive Ones

来源:互联网 发布:南风知我意2 番外七微 编辑:程序博客网 时间:2024/05/22 07:39

485. Max Consecutive Ones
Given a binary array, find the maxumum number of consecutive 1s in this array.
Example 1

Input: [1,1,0,1,1,1]Output: 3Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.

Note:
1. The input array will only contain 0 and 1.
2. The length of input array is a positive integer and will not exceed 10,000.

题目理解:
求最多连续的1的数量。

C++:
(Version_1)

class Solution{public:int findMaxConsecutiveOnes(vector<int>& nums){    int n=0;    std::vector<int> count;    for(int i=0;i<nums.size();i++)    {        if(nums[i]==1)            n+=1;        else        {            count.push_back(n);            n=0;        }    }    std::vector<int>::iterator biggest = std::max_element(std::begin(count), std::end(count));    return *biggest;    }};

运行正确但是runtime error。

考虑到不需要把每次计数的值都保存下来,只需要保留最大的值,那么每次比较当前计数与之前计数最大值的大小,保留较大值。
Version_2:

class Solution{public:int findMaxConsecutiveOnes(vector<int>& nums){    int n=0,count=0;    for(int i=0;i<nums.size();i++)    {        if(nums[i]==1)            n+=1;        else        {            if(n>count)                count=n;            n=0;        }    }    if(n>count)        count=n;    return count;    }};

感觉效率还是不太好,参照Top Solution.
Version_3:

class Solution{public:int findMaxConsecutiveOnes(vector<int>& nums){    int max=0, cur=0;    for(int i=0;i<nums.size();i++)    {        if(nums[i]&1)        {            max=max>cur?max:cur;        }        else  cur=0;    }    return max;    }};
0 0
原创粉丝点击