118. 杨辉三角

作者: 1江春水 | 来源:发表于2019-07-23 21:06 被阅读2次

    【题目描述】

    给定一个非负整数 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
    }
    

    相关文章

      网友评论

        本文标题:118. 杨辉三角

        本文链接:https://www.haomeiwen.com/subject/vchzlctx.html