目录
118-杨辉三角
访问量:2237

一、题目

地址:https://leetcode.com/problems/pascals-triangle/


定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5

输出:

[

     [1],

    [1,1],

   [1,2,1],

  [1,3,3,1],

 [1,4,6,4,1]

]

二、解法

1、基于go语言

func generate(numRows int) [][]int {
   var rs [][]int = make([][]int, numRows)
   if numRows < 1 {
      return rs
   }

   for i := 0; i < numRows; i++ {
      if i == 0 {
         rs[0] = []int{1}
         continue
      }
      valLen := i + 1 //计算改行有多少个元素
      rs[i] = make([]int, valLen)
      for j := 0; j < valLen; j++ {
         var upLeftVal, upRightVal int
         if j-1 < 0 {
            upLeftVal = 0
         } else {
            upLeftVal = rs[i-1][j-1]
         }
         if j >= len(rs[i-1]) {
            upRightVal = 0
         } else {
            upRightVal = rs[i-1][j]
         }

         rs[i][j] = upLeftVal + upRightVal
      }

   }

   return rs
}