动态规划 -- 118. 杨辉三角

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划 -- 118. 杨辉三角相关的知识,希望对你有一定的参考价值。

力扣

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

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

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]


示例 2:

输入: numRows = 1
输出: [[1]]

/**
 * @param number numRows
 * @return number[][]
 * 
 解题思路:
 杨辉三角是中轴对称的三角形
 从第三行开始,第二个数字开始到中间的数字为止,都是上一行数组的当前下标加上前一位的和
 然后翻转后拼接
 */
var generate = function(numRows) 
  if (numRows === 1) return [[1]]
  if (numRows === 2) return [[1], [1, 1]]

  const res = [[1], [1, 1]]
  for(let i = 3; i <= numRows; i++) 
    const mid = Math.ceil(i / 2)
    let j = 1
    let temp = [1]
    while(j < mid) 
      temp[j] = res[i-2][j] + res[i-2][j-1]
      j++
    
    const midNum = temp.pop()
    const reverse = []
    for(let i = temp.length-1; i >= 0; i--) 
      reverse.push(temp[i])
    
    if (i % 2 === 0) 
      temp = [...temp, midNum, midNum, ...reverse]
     else 
      temp = [...temp, midNum, ...reverse]
    

    res.push(temp)
  

  return res
;

console.log(generate(5))

1

以上是关于动态规划 -- 118. 杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—118. 杨辉三角(数组)—day25

Leetcode刷题100天—118. 杨辉三角(数组)—day25

LeetCode-动态规划杨辉三角

[动态规划]数字三角形

动态规划——三角形问题

动态规划-数字三角形V1