动态规划 -- 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