开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的11天,点击查看活动详情
1 题目
给定一个非负整数 numRows
, 生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
输入: numRows = 1
输出: [[1]]
提示:
1 <= numRows <= 30
2 个人解析
2.1 思路
拿到这一题,我首先是观察了一下题目给出的动态图他是下面的数等于左上角的数,加上右上角的数;
然后再看一下这个图两边都是1,再观察一下题目给出的数组,这是一个二维数组,看一下他们的数据结构。 由此想到了一个方案:可以用一个循环来循环这个杨辉三角的行,然后再在这个循环里面再写一个循环用于计算每一行里边的单独的数放在一个一维数组里面,计算完以后再把这个一维数组给push到外面的一维数组里面去,每完整的计算一行push一次,这样一个完整的杨辉三角的数组就出来了。
下面看一下代码:
2.2 代码
/**
* @param {number} numRows
* @return {number[][]}
*/
var generate = function(numRows) {
let yhArr = [],tempRowArr = [];
for(let i = 0;i < numRows; i++){
tempRowArr = [];
for(let j = 0;j <= i; j++){
if(j===0||j===i){
tempRowArr.push(1);
}
else{
tempRowArr.push(yhArr[i-1][j-1]+yhArr[i-1][j])
}
}
yhArr.push(tempRowArr)
}
return yhArr;
};
3 小结
主要是观察杨辉三角的规律,根据数据结构,再用代码写出来。
还有相关题型的算法也差不多,leetCode的,直接也放这了杨辉三角 II 。
感谢看完:
- 博主个人前端网站:zhangqiang.hk.cn
- 欢迎加入博主的前端学习qq交流群::706947563,专注前端开发,共同学习进步啊 ~