LeetCode 485. 最大连续 1 的个数
题目描述
思路分析
解法一:线性扫描(推荐)
核心思路:
- 维护当前连续 1 的长度与历史最大值。
- 遇到 1 则计数加一,遇到 0 则重置为 0。
- 每步更新最大值。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示数组长度。
- 空间复杂度:O(1),仅使用常数额外空间。
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int cur = 0;
int best = 0;
for (int num : nums) {
if (num == 1) {
cur++;
best = Math.max(best, cur);
} else {
cur = 0;
}
}
return best;
}
}
func findMaxConsecutiveOnes(nums []int) int {
cur := 0
best := 0
for _, v := range nums {
if v == 1 {
cur++
if cur > best {
best = cur
}
} else {
cur = 0
}
}
return best
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 487. 最大连续 1 的个数 II | 中等 | 双指针、滑动窗口 |
| 1004. 最大连续 1 的个数 III | 中等 | 滑动窗口 |
| 485. 最大连续 1 的个数 | 简单 | 线性扫描 |
| 1493. 删掉一个元素以后全为 1 的最长子数组 | 中等 | 双指针 |
| 713. 乘积小于 K 的子数组 | 中等 | 滑动窗口 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
