如下图,这是一个杨辉三角:
首先,通过分析的出杨辉三角的特点:
- N行有N列
- 每行首尾都是1
- 当前值 = 上一行当前列的值 + 上一行当前列左边的值
思路就是,创建一个列表 nums = [1],然后循环输出N行,每次循环都在nums列表尾添一个0,就完成了第一个特点,如下:
nums = [1]
for i in range(10):
print(nums)
nums.append(0)
然后,就是特点三,当前值 = 上一行当前列的值 + 上一行当前列左边的值,一行代码就搞定了:
nums = [1]
for i in range(10):
print(nums)
nums.append(0)
nums = [nums[j] + nums[j-1] for j in range(len(nums))]
反应不过来的,用笔捋一下就明白了
最后是leetcode题的答案,结果让你输出一个二维数组:
class Solution(object):
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
nums = [1]
triangle = []
for i in range(numRows):
triangle.append(nums[:])
nums.append(0)
nums = [nums[j] + nums[j-1] for j in range(len(nums))]
return triangle