JS leetcode 杨辉三角 超详细题解分析

您所在的位置:网站首页 杨辉三角是怎么回事 JS leetcode 杨辉三角 超详细题解分析

JS leetcode 杨辉三角 超详细题解分析

2024-07-16 04:55| 来源: 网络整理| 查看: 265

壹 ❀ 引

刷leetcode的第四天,原题出处为杨辉三角,题目描述如下:

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

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

示例:

输入: 5 输出:

[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]

那么按照惯例,我们先来分析题目。

贰 ❀ 解题思路

当我看到杨辉三角时,其实我是懵逼的,大学没数学,再往前追溯学过的东西早忘了,所以要实现这段程序,肯定得先了解杨辉三角基本概念。

百度一番,发现有如下结论:

每行数字的开始与结尾都是1,比如上图三角形的两边都是由1组成。 每个数字等于它上方两数的和。 第n行的数字有n个,第一行有1个,第二行有2个...

当然杨辉三角的结论远不止这些,但知道的越多反而对我们程序实现的关键因素造成了干扰,我们需要知道的就上面三条就足够了。

OK。先说说我的思路,我们来将上面的结论转化成逻辑,为了方便理解,我们将杨辉三角理解成一个金字塔。

比如现在用户传入了一个数字5,我们可知金字塔一共就有五层,比较特殊的是,这个金字塔得从头部往下建;其次,在第n层会有n个数字,且这一层的左右两边都是1。

所以我们可以根据用户传入的数字来决定金字塔要建立多少层(遍历多少次):

var generate = function (numRows) { //最终返回的数组 var result = []; //外层遍历控制金字塔要建几层,从上往下建 for (var i = 0; i < numRows; i++) { }; };

这里的 i 就代表当前层数,需要注意的是数组索引是从0开始,所以0其实对应的就是第一层,有那么一点点绕,还是要尝试去理解。

而在第 i 层会有 i个数字,所以我们得再嵌套一个循环,用来决定这一层的数字个数,以及数字内容(是1,还是上层数字两数的和)。

var generate = function (numRows) { //最终返回的数组 var result = []; //外层遍历控制金字塔要建几层,从上往下建 for (var i = 0; i < numRows; i++) { // 内层遍历控制每层有几个元素 var arr = []; for (var j = 0; j


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3