LeetCode(118)杨辉三角
今天是小呆刷题的第 17 天,今天的题目是:力扣(LeetCode)的第 118 题,杨辉三角
题目要求
给定一个非负整数*
numRows
,生成「杨辉三角」的前numRows
*行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例:
1 |
|
提示:
1 <= numRows <= 30
解题思路
这道题其实官方已经给了非常容易理解的规律和图示:每个数是它左上方和右上方的数的和。
我们可以用一个二维数组来描述示例 1 的数据:
1 |
|
根据上面给出的规律能够得出, 首尾的数字一定是 1, 其次从第三行开始,除去首尾,其他的数字都是它左上方和右上方的数的和,所以我们可以做出以下公式:(用i
表示行,用j
表示列)
list[i][0] = 1
每行的第一个数字是 1list[i][j] = list[i - 1][j - 1] + list[i - 1][j]
当前行的第j
个数等于上一行的j - 1
+ 上一行的j
list[i][i] = 1
每行的最后一个数字是 1
不难看出,这道题其实用动态规划就可以解决:(本题动态 gif 图直接看上面给的官方图即可)
1 |
|
小结
刷题也有大半个月了,目前大部分题目都是刷的 LeetCode 热门 100 题,目前来看,简单难度的题目仔细思考还是能做出来的,但是看了几道中等难度的题目,基本上没思路的居多。只能先把同类型的简单题目多练习练习再去尝试中等难度的题目了。加油吧!
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小呆&小萌的情侣博客!
评论