【数组】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 };

浙公网安备 33010602011771号