【题目描述】
给定一个非负整数 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
}
网友评论