Rearch Interest: Visualization">
118. 杨辉三角
题目描述
给定一个非负整数numRows
,生成杨辉三角的前numRows
行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例 1:
输入:
5
输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入:
numRows = 1
输出:[[1]]
提示:
1 <= numRows <= 30
我的代码
\(T(numRows) = O(numRows^2)\), \(S(numRows) = O(numRows^2)\)
1 | class MySolution118 |
时空复杂度
时间复杂度: \(O(numRows^2)\) 虽然更新
triangle
中的每个值都是在常量时间内发生的,但它会被执行\(O(numRows^2)\)次。 想要了解原因,就需要考虑总共有多少次循环迭代: 很明显外层循环需要运行numRows
次, 但在外层循环的每次迭代中,内层循环要运行triangle.get(i).size()
次。 因此,triangle
发生的更新总数为1+2+3+…+numRows
, 根据高斯公式有\([numRows*(numRows+1)]/2=O(numRows^2)\).空间复杂度:\(O(numRows^2)\) 因为我们需要存储我们在
triangle
中更新的每个数字, 所以空间需求与时间复杂度相同。