【刷题打卡】485. 最大连续 1 的个数

101 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

485. 最大连续 1 的个数

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

示例 1:

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

示例 2:

输入:nums = [1,0,1,1,0,1]
输出:2

提示:

  • 1 <= nums.length <= 10^5
  • nums[i] 不是 0 就是 1

二、思路分析:

声明两个变量,res1是用来存储在运行过程中1出现的次数,另一个是当为0的时候,用来储存上面生产的1的个数,每次遇到0,对他们两个进行比较,取最大的,使res1,归零,重新计算,到最后的Math.max(res1,res2),是为了防止,最后一次产生的值是最大的,所以最后在比较一下。

三、AC 代码:

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int res1 = 0;
        int res2 = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                res1 ++;
            } else if (nums[i] == 0){
                if (res1 > res2) {
                    res2 = res1;
                    res1 = 0;
                } else {
                    res1 = 0;
                }
            }
        }
        return Math.max(res1,res2);
    }
}

四、总结:

双指针,快慢指针还是需要多练练。

范文参考:

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

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