力扣第42刷-最大连续 1 的个数

简介: 力扣第42刷-最大连续 1 的个数

Example 42

最大连续 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的个数,需要遍历数组,并记录最大的连续1的个数和当前的连续1的个数。如果当前元素是1,则将当前的连续1的个数加1,否则,使用之前的连续1的个数更新最大的连续1的个数,并将当前的连续1的个数清零。

遍历数组结束之后,需要再次使用当前的连续1的个数更新最大的连续1的个数,因为数组的最后一个元素可能是1,且最长连续1的子数组可能出现在数组的末尾,如果遍历数组结束之后不更新最大的连续1的个数,则会导致结果错误。

示例代码如下:

public class MaxConsecutiveOnes {
    /**
     * 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
     * 示例 1:
     * 输入:nums = [1,1,0,1,1,1]
     * 输出:3
     * 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
     * 示例 2:
     * 输入:nums = [1,0,1,1,0,1]
     * 输出:2
     * 来源:力扣(LeetCode)
     * 链接:https://leetcode.cn/problems/max-consecutive-ones
     */
    public static void main(String[] args) {
        MaxConsecutiveOnes mco = new MaxConsecutiveOnes();
        System.out.println(mco.findMaxConsecutiveOnes(new int[]{1, 1, 0, 1, 1, 1})); // 3
    }
    /**
     * 官方
     *
     * @param nums
     * @return
     */
    public int findMaxConsecutiveOnes(int[] nums) {
        int maxCount = 0, count = 0;
        int n = nums.length;
        for (int i = 0; i < n; i++) {
            if (nums[i] == 1) {
                count++;
            } else {
                maxCount = Math.max(maxCount, count);
                count = 0;
            }
        }
        maxCount = Math.max(maxCount, count);
        return maxCount;
    }
}
相关文章
|
4天前
|
算法 测试技术
LeetCode-1004. 最大连续1的个数 III
LeetCode-1004. 最大连续1的个数 III
|
4天前
leetcode-485:最大连续1的个数
leetcode-485:最大连续1的个数
25 0
|
4天前
剑指Offer LeetCode 面试题40. 最小的k个数
剑指Offer LeetCode 面试题40. 最小的k个数
23 0
|
4天前
【力扣】485.最大连续 1 的个数
【力扣】485.最大连续 1 的个数
【力扣每日一题:2-19】1004. 最大连续1的个数 III【中等】
【力扣每日一题:2-19】1004. 最大连续1的个数 III【中等】
|
4天前
剑指Offer LeetCode 面试题39. 数组中出现次数超过一半的数字
剑指Offer LeetCode 面试题39. 数组中出现次数超过一半的数字
18 0
|
12月前
|
人工智能 算法 vr&ar
每日算法系列【LeetCode 1004】最大连续1的个数 III
每日算法系列【LeetCode 1004】最大连续1的个数 III
|
12月前
|
算法 C++
每日算法系列【LeetCode 128】最长连续序列
每日算法系列【LeetCode 128】最长连续序列
LeetCode 485. 最大连续 1 的个数 - 暴力法
定义两个变量 thisSum 每次遍历中的最大值 maxSum 返回值,所有遍历结果中的最大值
Leetcode——485. 最大连续 1 的个数
文章目录 1、题目 2、滑动窗口 3、一次遍历(官方题解)
Leetcode——485. 最大连续 1 的个数