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
c代码:
1 int findMaxConsecutiveOnes(int* nums, int numsSize) {
2 int count = 0, max = 0;
3 for(int i = 0; i < numsSize; i++){
4 if(nums[i] == 1){
5 count++;
6 }
7 else{
8 if(count > max)
9 max = count;
10 count = 0;
11 }
12 }
13 //如果最后一个是1,这个判断是很有必要的
14 if(count > max)
15 max = count;
16 return max;
17
18 }
c++:
1 class Solution {
2 public:
3 int findMaxConsecutiveOnes(vector<int>& nums) {
4 int count = 0, maxn = 0;
5 int size = nums.size();
6 for(int i = 0; i < size; i++){
7 if(nums[i] == 1){
8 count++;
9 }
10 else{
11 maxn = max(count, maxn);
12 count = 0;
13 }
14 }
15 maxn = max(count, maxn);
16 return maxn;
17 }
18 };
用向量做法:
1 class Solution {
2 public:
3 int findMaxConsecutiveOnes(vector<int>& nums) {
4 vector<int> cnt(nums.size());
5 cnt[0] = nums[0];
6 int maxn = 0;
7 for(int i = 1; i < nums.size(); i++){
8 if(nums[i] == 0){
9 cnt[i] = 0;
10 maxn = max(maxn, cnt[i-1]);
11 } else {
12 cnt[i] = cnt[i-1] + 1;
13 }
14 }
15 maxn = max(maxn, cnt[nums.size() - 1]);
16 return maxn;
17 }
18 };
没有必要用c++的,用c,通过运行时间,显然c快
原文链接: https://www.cnblogs.com/qinduanyinghua/p/6350073.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/248444
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!