题意:
解题思路:
思路: 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}