题意:
解题思路:
思路: O(n2)
1. 从上到下依次计算每一行
2. 对于每行的首位,或者行列i,j值相等,则置位1,比如[00,10] = 1,[11,22] = 1;
3. 计算中间值:$ans[$i][$j] = $ans[$i - 1][$j - 1] + $ans[$i - 1];
PHP代码实现:
class Solution {
/**
* @param Integer $numRows
* @return Integer[][]
*/
function generate($n) {
if ($n == 0) return [];
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j <= $i; $j++) {
if ($j == 0 || $j == $i) {
$ans[$i][$j] = 1;
} else {
$ans[$i][$j] = $ans[$i - 1][$j - 1] + $ans[$i - 1][$j];
}
}
}
return $ans;
}
}
GO代码实现:
func generate(n int) [][]int {
ans := make([][]int, n)
for i := 0; i < n; i++ {
ans[i] = make([]int, i + 1)
ans[i][0] = 1
for j := 1; j < i; j++ {
ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j]
}
ans[i][i] = 1
}
return ans;
}