声明:原题目转载自LeetCode,解答部分为原创
Problem :
Given a binary array, find the maximum number of consecutive 1s in this array.
Example 1:
Input: [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Note:
- The input array will only contain
0
and1
. - The length of input array is a positive integer and will not exceed 10,000
思路:遍历一遍数组,记录连续 “1” 的个数并分别存入vector中,返回最大值,若vector为空则返回 0
代码如下:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
if(nums.empty())
return 0;
vector<int> room;
int sign = nums[0];
int count = 0;
int index = 0;
while(index < nums.size())
{
int temp = nums[index];
if(temp == sign)
{
count ++;
index ++;
}
else
{
if(sign == 1)
room.push_back(count);
sign = temp;
count = 0;
}
}
if(sign == 1)
room.push_back(count);
if(room.empty())
return 0;
else
{
sort(room.begin(), room.end());
return room[room.size() - 1];
}
}
};
int main()
{
vector<int> nums(1,1);
Solution text;
cout << text.findMaxConsecutiveOnes(nums) << endl;
return 0;
}