1, 题目
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2, 算法
object Solution {def generate(numRows: Int): List[List[Int]] = {val buffer = scala.collection.mutable.ListBuffer[List[Int]]()if (numRows == 0) {return buffer.toList}buffer.append(List(1))if (numRows == 1) {return buffer.toList}buffer.append(List(1, 1))if (numRows == 2) {return buffer.toList}var last = Array(1, 1)for (x <- 3 to numRows) {val current = scala.collection.mutable.ArrayBuffer[Int]()current.append(1)for (i <- Range(0, last.length - 1)) {current.append(last(i) + last(i + 1))}current.append(1)buffer.append(current.toList)last = current.toArray}buffer.toList}}
#pythonclass Solution:def generate(self, numRows: int) -> List[List[int]]:if numRows == 0:return []if numRows == 1:return [[1]]if numRows == 2:return [[1], [1, 1]]result = [[1], [1, 1]]for x in range(3, numRows + 1):last = result[-1]current = [1]for i in range(len(last) - 1):current.append(last[i] + last[i + 1])current.append(1)result.append(current)return result
