LeetCode 485. 最大连续 1 的个数

题目描述

485. 最大连续 1 的个数

image-20230307212841379

思路分析

解法一:线性扫描(推荐)

核心思路

  • 维护当前连续 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 的子数组 中等 滑动窗口
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/39421249
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!