嗨!~ 大家好,我是YK菌 🐷 ,一个微系前端 ✨,喜欢分享自己学到的小知识 🏹,欢迎关注我呀 😘 ~ [微信号: yk2012yk2012,微信公众号:ykyk2012]
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
中等、困难题我唯唯诺诺,简单题我重拳出击,今天再来做一道简单题增增自信,杨辉三角。其实这题看上去简单,但是还是有些细节容易出错的~
118. 杨辉三角
链接:leetcode-cn.com/problems/pa…
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
【解法】双层循环
我们只要根据题目的定义,根据规律写代码就可以了,具体的思路可以看代码中的注释
/**
* @param {number} numRows
* @return {number[][]}
*/
function generate(numRows) {
// 创建一个结果数组,数组中的元素还是数组,也就是一个二维数组
let result = [];
// 结果数组中的第i个元素就是杨辉三角第i行的元素 (i从0开始)
for (let i = 0; i < numRows; i++) {
// 定义杨辉三角中的某一行row数组,第i行有i+1个元素,内容都填充为1
let row = new Array(i + 1).fill(1);
// 遍历行数组,给其填充结果
for (let j = 1; j < row.length - 1; j++) {
// 满足题目给出的要求,每个数是它左上方和右上方的数的和
row[j] = result[i - 1][j - 1] + result[i - 1][j];
}
// 将行数组row推入结果数组result中
result.push(row);
}
// 返回杨辉三角结果数组
return result;
}
复制代码
运行结果