Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

Kotlin Leetcode - 118. Pascal's Triangle

題目連接:https://leetcode.com/problems/pascals-triangle/

class Solution {
    fun generate(numRows: Int): List<List<Int>> {
        
    }
}

解題思路

這一題很單純

以迴圈持續的算出下一層巴斯卡三角形的內容即可

如果偏好函數式的風格

可以使用 generateSequence 產生內容

Kotlin 參考解答

class Solution {  
    fun generate(numRows: Int): List<List<Int>> {  
        if (numRows == 0) return listOf()  
  
        val res = mutableListOf(listOf(1))  
  
        for (i in 1 until numRows) {  
            val list = mutableListOf(1)  
            for (j in 1 until i) {  
                list.add(res[i - 1][j - 1] + res[i - 1][j])  
            }  
            list.add(1)  
            res.add(list)  
        }  
  
        return res  
    }  
}

單一表達式內完成的方式如下

class Solution {
    fun generate(numRows: Int) =
        generateSequence(listOf(1)) { prev ->
            listOf(1) + prev.windowed(2).map { it.sum() } + listOf(1)
        }.take(numRows)
        .toList()
}

回到 leetcode 列表