iT邦幫忙

2022 iThome 鐵人賽

DAY 24
1
Software Development

Kotlin 程式人:Leetcode 意外旅程系列 第 24

Day 24:自主學習 leetcode 帶來順利的一天:2114、2011、2160、1920

  • 分享至 

  • xImage
  •  

「兩位這幾天,又解了哪些題目呀?」

學著讓曉欣和菁菁自己找題目之後,夏天變得輕鬆很多,只需要幫忙看一下兩人解題的答案即可。

曉欣和菁菁也很老實的努力寫 leetcode 題目,並沒因為夏天沒有給兩位題目,就開始怠惰起來。

「夏天姐,來幫我們看看這些題目寫得怎樣」

2114. Maximum Number of Words Found in Sentences

class Solution {
    fun mostWordsFound(sentences: Array<String>): Int {
        var max = 0
        sentences.forEach {
            var k = 0
            it.forEach { if (it == ' ') k++ }
            if (k > max) max = k
        }
        return max + 1
    }
}

「很不錯呀!我自己當初是這樣寫」

class Solution {
    fun mostWordsFound(sentences: Array<String>) =
        sentences.maxOfOrNull {
            it.split(" ").size
        } ?: 0
}

「喔——用 maxOfOrNull()簡潔多了。那這一題呢?」

2011. Final Value of Variable After Performing Operations

class Solution {
    fun finalValueAfterOperations(A: Array<String>) = 
    2 * A.filter{ it == "X++" || it == "++X" }.size - A.size
}

「喔!我以為我寫的答案已經很簡短,不過你們寫得比我當初要簡潔耶!」夏天看了一下,驚訝的說

class Solution {
    fun finalValueAfterOperations(A: Array<String>) = 
    (A.filter{ it == "X++" || it == "++X" }.size) - (A.size - A.filter{ it == "X++" || it == "++X" }.size)
}

「嘿嘿—總是不能輸給夏天姐呀!」菁菁調皮的說

看到程式能力大幅長進,又默契十足的兩位,夏天覺得有點不服氣,但是也有一點驕傲。

「還有這題!」隨著時間過去,曉欣的程式能力越來越好,自信也隨之提高了。

2160. Minimum Sum of Four Digit Number After Splitting Digits

class Solution {  
    fun minimumSum(num: Int): Int {  
        val digits = IntArray(4)  
  
        var n = num  
        for (i in 0..3) {  
            digits[i] = n % 10  
            n /= 10  
        }  
        digits.sort()
  
        return digits[0] * 10 + digits[2] 
        + digits[1] * 10 + digits[3]  
    }  
}

「曉欣很不錯耶!竟然還使用了 /= 。看來平時有好好的練習寫程式喔!」

「對呀!我都有好好練習 Kata 和寫 Kotlin Koans 喔!」曉欣充滿自信的回答。「而且現在我對陣列相關的題目,寫起來都很快就能做出來了」

1920. Build Array from Permutation

class Solution {
    fun buildArray(nums: IntArray): IntArray {
        val ans = MutableList(nums.size) { 0 }
        nums.forEachIndexed { i, num -> ans[i] = nums[nums[i]] }
        return ans.toIntArray()
    }
}

「如何?這段時間內,有沒有感覺 Kotlin 是個很直觀的語言?」

「有呀!撰寫時每次有想要做到的事情,都可以很容易地搜到某個很直觀的作法。Kotlin 真的是蠻容易學習的語言!」

「而且還有很多方便的工具,像是上次提到的 scope function,回去研究了一下,真是太好用了。」

「很高興你們學得這麼開心,另外要記得好好的更新自己的 github 呀」


上一篇
Day 23:解決圖的題目:617、1791、997
下一篇
Day 25:失蹤的夏天姐:1528、1832、371、2236
系列文
Kotlin 程式人:Leetcode 意外旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言