这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战。
题目描述:
给定一个二进制数组, 计算其中最大连续 1 的个数。
示例一
输入: [1,1,0,1,1,1]
输出: 3
解释: 开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
提示:
- 输入的数组只包含
0和1。 - 输入数组的长度是正整数,且不超过 10,000。
思路分析
一次遍历
要找到连续的 1 的个数,我们只需要遍历一次数值即可。
我们先定义一个变量max,表示之前记录的最大的连续的 1 的个数。
我们定义一个变量count,用来记录本次连续的 1 的个数,遍历的时候遇到 1 就 count++,同时count 与 max 比较,如果大于 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)