#LeetCode:485. Max Consecutive Ones

灆洢 2020-05-15 01:12:57

此題要找出陣列中,連續 1 出現的最長長度為何。

基本上做法就是從頭開始巡覽,去紀錄每一小段的 1 有多長。遇到 1 的時候長度增加 1,遇到 0 的話就重新歸零繼續計算。最後取所有小段 1 長度中最長的那個長度即是答案。

Kotlin(248ms)

/*******************************************************
 * LeetCode 485. Max Consecutive Ones                  *
 * Author: Maplewing [at] knightzone.studio            *
 * Version: 2020/05/15                                 *
 *******************************************************/
class Solution {
    fun findMaxConsecutiveOnes(nums: IntArray): Int {
        var maxOneLength = 0
        var oneLength = 0
        for (num in nums) {
            when (num) {
                1 -> {
                    ++oneLength
                    maxOneLength = Math.max(maxOneLength, oneLength)
                }
                else -> oneLength = 0
            }
        }

        return maxOneLength
    }
}

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料