题意:

image.png

解题思路:

  1. 思路: O(n2)
  2. 1. 从上到下依次计算每一行
  3. 2. 对于每行的首位,或者行列ij值相等,则置位1,比如[00,10] = 1,[11,22] = 1;
  4. 3. 计算中间值:$ans[$i][$j] = $ans[$i - 1][$j - 1] + $ans[$i - 1];

PHP代码实现:

  1. class Solution {
  2. /**
  3. * @param Integer $numRows
  4. * @return Integer[][]
  5. */
  6. function generate($n) {
  7. if ($n == 0) return [];
  8. for ($i = 0; $i < $n; $i++) {
  9. for ($j = 0; $j <= $i; $j++) {
  10. if ($j == 0 || $j == $i) {
  11. $ans[$i][$j] = 1;
  12. } else {
  13. $ans[$i][$j] = $ans[$i - 1][$j - 1] + $ans[$i - 1][$j];
  14. }
  15. }
  16. }
  17. return $ans;
  18. }
  19. }

GO代码实现:

  1. func generate(n int) [][]int {
  2. ans := make([][]int, n)
  3. for i := 0; i < n; i++ {
  4. ans[i] = make([]int, i + 1)
  5. ans[i][0] = 1
  6. for j := 1; j < i; j++ {
  7. ans[i][j] = ans[i - 1][j - 1] + ans[i - 1][j]
  8. }
  9. ans[i][i] = 1
  10. }
  11. return ans;
  12. }