Skip to content

Latest commit

 

History

History
44 lines (44 loc) · 928 Bytes

杨辉三角.md

File metadata and controls

44 lines (44 loc) · 928 Bytes
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行.

示例图

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]
解法
没什么好的技巧,就是注意极限情况0,还有两个指针的大小。
func generate(numRows int) [][]int {
    res := make([][]int, numRows, numRows)
    if numRows == 0 {
        return res
    }
	res[0] = []int{1}
	if numRows == 1 {
		return res
	}
	for i := 1; i < numRows; i++ {
		row := make([]int, i + 1)
		row[0] = 1
		for j := 0; j <= i; j++ {
			if j == 0 || j == i {
				row[j] = 1
			} else {
				row[j] = res[i - 1][j - 1] + res[i - 1][j]
			}
		}
		res[i] = row
	}
	return res
}
// 执行用时 0ms
// 内存消耗 2MB