768. 杨辉三角

768. 杨辉三角

中文English

给一整数 n, 返回杨辉三角的前 n 行

样例

样例 1:

输入 : n = 4
输出 :
[
 [1]
 [1,1]
 [1,2,1]
 [1,3,3,1]
]

注意事项

  1. 0 <= n <= 20
  2. 杨辉三角也被叫做帕斯卡三角形. --(Wikipedia)
class Solution:
    """
    @param n: a Integer
    @return: the first n-line Yang Hui's triangle
    """
    '''
    大致思路:
    1.前两个可以固定,后面的数可以开始计算正上方两个数之和
    2.最左边和最右边固定为1(从第三个开始,按照一定规律)
    '''
    def __init__(self):
        self.res = [[1],[1,1]]

    def  calcYangHuisTriangle(self,n):
        if n==0:
            return []
        elif n == 1:
            return [[1]]
        elif n == 2:
            return self.res
            
        ##给出两个固定值
        for i in range(2,n):
            add_res = self.getnextres(i)
            self.res.append(add_res)
        return self.res

    ##给出一个方法,可以求得下一个数组,num为第几个(每调用一次都会append到self.res里面)
    def getnextres(self,num):
        ##本身是从1开始计数的,但是数组的话是从0开始,所以需要设置初始值
        add_res = [1]
        for j in range(len(self.res[num-1])-1):
            add_res.append(self.res[num-1][j]+self.res[num-1][j+1])
        add_res.append(1)
        return add_res

 

posted @ 2020-03-22 15:03  风不再来  阅读(148)  评论(0编辑  收藏  举报