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;
};

參考資料