LeetCode 118. 杨辉三角 Pascal's Triangle

【题目描述】

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
PascalTriangleAnimated2.gif

【实例】

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

杨辉三角特性:
1、第n+1行的第i个数 = 第n行的第i-1个数 + 第i个数

代码实现:

func generate(_ numRows: Int) -> [[Int]] {
    if numRows == 0 {
        return []
    }
    if numRows == 1 {
        return [[1]]
    }
    if numRows == 2 {
        return [[1],[1,1]]
    }
    var triangle = [[Int]]()
    triangle.append([1])
    triangle.append([1,1])
    if numRows > 2 {
        for i in 2..<numRows {
            var tmp = [Int]()
            var preArr = triangle[i-1]//上一行
            for ii in 0..<i+1 {
                if ii == 0 || ii == i {
                    tmp.append(1)
                } else {
                    let sum = preArr[ii-1]+preArr[ii]
                    tmp.append(sum)
                }
            }
            triangle.append(tmp)
        }
    }
    return triangle
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容