485. Max Consecutive Ones

Leetcode 问题: 485. Max Consecutive Ones

题目

Given a binary array nums, return the maximum number of consecutive 1’s in the array.

传入一个整数阵列 nums,回传连续出现 1 的次数是多少

Example

Input: nums = [1,1,0,1,1,1]
Output: 3
Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
Input: nums = [1,0,1,1,0,1]
Output: 2

演算法

1. 找寻 1

当出现 1,则计数器 +1,然后纪录目前抓到的计数器最大值

2. 不是 1

重设整个计数器,重新寻找

答案

JavaScript

function findMaxConsecutiveOnes(numsList) {
    // 最多连续出现 1 次数
    var maxConsecutiveOneCount = 0;
    // 目前 1 出现次数
    var currentOneCount = 0;
    for (var i = 0; i < numsList.length; i++) {
        // 目前的数字
        var currentNumber = numsList[i];
        if (currentNumber == 1) {
            // 如果目前数字是 1,计算 1 出现次数
            currentOneCount++;
            // 比较「最多连续出现 1 次数」与「目前 1 出现次数」取最大值
            maxConsecutiveOneCount = Math.max(maxConsecutiveOneCount, currentOneCount);
        }
        else {
            // 如果目前数字不是 1,重新计算 1 出现次数
            currentOneCount = 0;
        }
    }
    return maxConsecutiveOneCount;
}

TypeScript

function findMaxConsecutiveOnes(numsList: number[]): number {
    // 最多连续出现 1 次数
    let maxConsecutiveOneCount = 0;
    // 目前 1 出现次数
    let currentOneCount = 0;

    for (let i = 0; i < numsList.length; i++) {
        // 目前的数字
        let currentNumber = numsList[i];
        if (currentNumber == 1) {
            // 如果目前数字是 1,计算 1 出现次数
            currentOneCount++;
            // 比较「最多连续出现 1 次数」与「目前 1 出现次数」取最大值
            maxConsecutiveOneCount = Math.max(maxConsecutiveOneCount, currentOneCount);
        } else {
            // 如果目前数字不是 1,重新计算 1 出现次数
            currentOneCount = 0
        }
    }

    return maxConsecutiveOneCount;
};

参考资料