LeetCode.485 最大连续 1 的个数

227 阅读1分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

题目描述:

485. 最大连续 1 的个数

给定一个二进制数组, 计算其中最大连续 1 的个数。

示例一

输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.

提示:

  • 输入的数组只包含 0 和 1 。
  • 输入数组的长度是正整数,且不超过 10,000。

思路分析

一次遍历

要找到连续的 1 的个数,我们只需要遍历一次数值即可。

我们先定义一个变量max,表示之前记录的最大的连续的 1 的个数。 我们定义一个变量count,用来记录本次连续的 1 的个数,遍历的时候遇到 1count++同时countmax 比较,如果大于 max,则要更新 max 遇到 0 就 清零,即count = 0

AC代码

class Solution {
    fun findMaxConsecutiveOnes(nums: IntArray): Int {
        var max = 0
        var count = 0
        for (num in nums) {
            if (num == 1) {
                count++
                if (count > max) {
                    max = count
                }
            } else {
                count = 0
            }
        }
        return max
    }
}

总结

这题虽然是非常的简单,但是看大神们还有其他思路的解法,比如滑动窗口等,参考 一次遍历,保存遇到的最后一个 0 的位置 - 最大连续 1 的个数

参考

最大连续1的个数 - 最大连续 1 的个数 - 力扣(LeetCode) (leetcode-cn.com)

一次遍历 | 485. 最大连续1的个数 - 最大连续 1 的个数 - 力扣(LeetCode) (leetcode-cn.com)

一次遍历,保存遇到的最后一个 0 的位置 - 最大连续 1 的个数 - 力扣(LeetCode) (leetcode-cn.com)