iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
自我挑戰組

每日LeetCode解題紀錄系列 第 21

LeetCode解題 Day21

485. Max Consecutive Ones

https://leetcode.com/problems/max-consecutive-ones/


題目解釋

你會得到一組陣列,請回傳陣列中最多有幾個1相連

example

https://i.imgur.com/ir83EcO.png


解法

今天是很簡單的easy題目,只要一個一個檢查是不是1,是的話就紀錄次數,最後回傳紀錄中大的次數就好

程式碼

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        ans = 0
        
        count = 0
        for i in nums:
            if i  == 1:
                count += 1
                ans = max(ans, count)
            else:
                count = 0
        
        return ans

自找麻煩的解法

一行程式碼

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        return max(map(len, (''.join(map(str, nums))).split('0')))

一行程式碼看起來就很酷,但是要知道他在幹嘛會比較麻煩

我們稍微拆開來看

下面這段是把陣列中的數字都轉成string

map(str, nums)

這段是把list的內容合併起來變成字串

''.join(map(str, nums))

這段是把字串依照0的位置切成多段

(''.join(map(str, nums))).split('0')

把剛剛切成多段的字串轉成他們的長度

map(len, (''.join(map(str, nums))).split('0'))

回傳最長的那個

return max(map(len, (''.join(map(str, nums))).split('0')))

閒聊

如果覺得太簡單,可以挑戰進階題看看

連假最後一天,大家中秋快樂


上一篇
LeetCode解題 Day20
下一篇
LeetCode解題 Day22
系列文
每日LeetCode解題紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言