内容简介:LeetCode - 119 - 杨辉三角II(pascals-triangle-ii)
Create by jsliang on 2019-6-28 07:39:47
Recently revised in 2019-6-28 08:27:00
一 目录
不折腾的前端,和咸鱼有什么区别
| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 3.1 解法 - 常规解法 | | 3.2 解法 - 数学解法 |
二 前言
难度:简单
涉及知识:数组
题目地址:https://leetcode-cn.com/problems/pascals-triangle-ii/
题目内容:
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 3
输出: [1,3,3,1]
进阶:
你可以优化你的算法到 O(k) 空间复杂度吗?
补充:杨辉三角类似于:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
三 解题
小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。
3.1 解法 - 常规解法
解题代码:
var getRow = function(rowIndex) {
if (!rowIndex) {
return [1];
}
if (rowIndex === 1) {
return [1, 1];
}
let recursion = getRow(rowIndex - 1);
let result = [];
for (let i = 0; i < rowIndex; i++) {
if (recursion[i] && recursion[i + 1]) {
result.push(recursion[i] + recursion[i + 1]);
}
}
return [1, ...result, 1];
};
执行测试:
rowIndex
:5
return
:
[ 1, 5, 10, 10, 5, 1 ]
LeetCode Submit:
√ Accepted
√ 34/34 cases passed (80 ms)
√ Your runtime beats 83.43 % of javascript submissions
√ Your memory usage beats 7.19 % of javascript submissions (35.1 MB)
知识点:
push()
:push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。 push()
详细介绍
解题思路:
首先,今天一大早起来看到这道题,瞪,第一感觉是我昨天是不是做了什么了不得的事儿……
昨天的题也是杨辉三角(题 118),传递一个参数 n,获取它的 n 行记录,即:
if (n === 4) {
return [
[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
]
}
然后,昨天我的做法就是:统计每行的返回结果,最终汇总到一块。
所以……
我昨天就破解了两道题了啊-_-||
最后,还是扯下思路吧:
如果
rowIndex
为0
,返回[1]
如果
rowIndex
为1
,返回[1,1]
递归
getRow(rowIndex-1)
,然后求出中间的和,并return
出来[1,...result,1]
细节小伙伴们可以打印看看是怎么一回事,在此就不多累述了。
3.2 解法 - 数学解法
解题代码:
var getRow = function(rowIndex) {
let a = 1;
let arr = [];
for (let i = 0; i <= rowIndex; i++) {
arr.push(a);
a = (a * (rowIndex - i)) / (i + 1);
}
return arr;
};
执行测试:
5
return
:
[ 1, 5, 10, 10, 5, 1 ]
LeetCode Submit:
√ Accepted
√ 34/34 cases passed (72 ms)
√ Your runtime beats 94.57 % of javascript submissions
√ Your memory usage beats 62.09 % of javascript submissions (33.7 MB)
知识点:
push()
:push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。 push()
详细介绍
解题思路:
惯例看下 LeetCode 解题库:
大佬受我一拜!
初瞄,感觉是数学解法,卧槽,数学大佬,是不是小学获得过奥林匹克数学竞赛奖的~
我不管,我没看懂,我不解释,等小伙伴们给我留言评论,说出这种解法思路的第一个小伙伴,获取赏金 6.66!
不折腾的前端,和咸鱼有什么区别!
jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。
扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。
以上所述就是小编给大家介绍的《LeetCode - 119 - 杨辉三角II(pascals-triangle-ii)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- C语言打印杨辉三角代码及解析
- LeetCode每日一题: 杨辉三角(No.118)
- leetcode # 118:Pascal's Triangle 杨辉三角
- LeetCode - 118 - 杨辉三角(pascals-triangle)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。