原题链接:Leetcode 485. Max Consecutive Ones
Given a binary array nums
, return the maximum number of consecutive 1
's in the array.
Example 1:
Input: nums = [1,1,0,1,1,1]
Output: 3
- Explanation: The first two digits or the last three digits are consecutive
1
s. The maximum number of consecutive1
s is 3.
Example 2:
Input: nums = [1,0,1,1,0,1]
Output: 2
Constraints:
- 1 <= nums.length <= 105
- nums[i] is either
0
or1
.
方法一:遍历
思路:
维护两个变量ans和tmp,遍历一遍数组
C++代码:
class Solution {
public:
int findMaxConsecutiveOnes(vector<int>& nums) {
int ans = 0, tmp = 0;
for(int i = 0; i < nums.size(); i++ ){
if(nums[i] == 1)
tmp++;
else{
ans = max(ans, tmp);
tmp = 0;
}
}
ans = max(ans, tmp);
return ans;
}
};
Python3代码:
class Solution:
def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
ans, tmp = 0, 0
for num in nums:
if num == 1:
tmp = tmp + 1
else:
ans = max(ans, tmp)
tmp = 0
ans = max(ans, tmp)
return ans
复杂度分析:
- 时间复杂度:O(n)
- 空间复杂度:O(1)