【数组】485. 最大连续1的个数

题目:

 

 

解答:

方法一:快慢指针

 1 class Solution {
 2 public:
 3     int findMaxConsecutiveOnes(vector<int>& nums) 
 4     {
 5         int slow = 0;
 6         int fast = 0;
 7         int count = 0;
 8         int maxcount = INT_MIN;
 9         
10         //  [1,1,0,1,1,1]
11         while (fast < nums.size())
12         {
13             if (nums[fast] == 1)
14             {
15                 if (count == 0)
16                 {
17                     slow = fast;
18                 }
19                 count++;
20             }
21             else if (nums[fast] == 0)
22             {
23                 if (count > 0)
24                 {
25                     maxcount = std::max(maxcount, fast - slow);
26                     count = 0;
27                 }
28             }
29             
30             ++fast;
31         }
32 
33         if (count > 0)
34         {
35             maxcount = std::max(maxcount, fast - slow);
36         }
37         
38         return maxcount == INT_MIN ? 0 : maxcount;
39         
40     }
41 };

 

方法二:

 1 class Solution {
 2 public:
 3     int findMaxConsecutiveOnes(vector<int>& nums) 
 4     {
 5         int max=0;
 6         int num=0;
 7 
 8         for(int i=0;i<nums.size();i++)
 9         {
10             if(nums[i]==1)
11                 num++;
12             else
13                 num=0;
14             max>num?:max=num;
15         }
16         return max;
17     }
18 };

 

posted @ 2020-05-04 17:24  梦醒潇湘  阅读(205)  评论(0)    收藏  举报