题意:
解题思路:
思路: O(n2)
1. 从上到下依次计算每一行,由于每行的值仅与上一行有关,所以可以采用滚动数组优化;
2. ans[i & 1][j] = 1 =》 0行存储的是[0,2,4,6,8行],1行存储[1,3,5,7,9]
3. 计算中间值:$ans[$i & 1][$j] = $ans[$i - 1 & 1][$j - 1] + $ans[$i - 1 & 1][$j];
PHP代码实现:
class Solution {
/**
* @param Integer $n
* @return Integer[]
*/
function getRow($n) {
if ($n < 0) return false;
$ans = [];
$ans[0] = [1];
$ans[1] = [1, 1];
for ($i = 2; $i <= $n; $i++) {
for ($j = 0; $j <= $i; $j++) {
if ($j == 0 || $j == $i) {
$ans[$i & 1][$j] = 1;
} else {
$ans[$i & 1][$j] = $ans[$i - 1 & 1][$j - 1] + $ans[$i - 1 & 1][$j];
}
}
}
return $ans[$n & 1];
}
}
GO代码实现:
func getRow(rowIndex int) []int {
result := make([]int, rowIndex + 1)
for i := 0; i <= rowIndex; i++ {
for j := i; j >= 0; j-- {
if j == i || j == 0 {
result[j] = 1
} else {
result[j] += result[j - 1]
}
}
}
return result
}