leetcode题----杨辉三角

leetcode题----杨辉三角_第1张图片

如下图,这是一个杨辉三角:
leetcode题----杨辉三角_第2张图片

首先,通过分析的出杨辉三角的特点:

  1. N行有N列
  2. 每行首尾都是1
  3. 当前值 = 上一行当前列的值 + 上一行当前列左边的值

思路就是,创建一个列表 nums = [1],然后循环输出N行,每次循环都在nums列表尾添一个0,就完成了第一个特点,如下:

nums = [1]
for i in range(10):
    print(nums)
    nums.append(0)

leetcode题----杨辉三角_第3张图片
然后,就是特点三,当前值 = 上一行当前列的值 + 上一行当前列左边的值,一行代码就搞定了:

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题----杨辉三角_第4张图片
反应不过来的,用笔捋一下就明白了

最后是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

leetcode题----杨辉三角_第5张图片

你可能感兴趣的:(Python,leetcode,算法)