LeetCode118.杨辉三角

1.个人所做代码

class Solution:
    def generate(self, numRows):
        """
        :type numRows: int
        :rtype: List[List[int]]
        """
        tranList = []
        for i in range(0, numRows):
            tranList.append([])

        for k in range(0, numRows):
            tranList[k].append(1)
            for i in range(1, k):
                if i != k:
                    tranList[k].append(tranList[k-1][i-1] + tranList[k-1][i])
            if k != 0:
                tranList[k].append(1)
        return tranList

2.他人的用时更短版本(记录一下)

class Solution:
    def generate(self, numRows):

        a=[[1]]
    
        if numRows==0:
            return []
        while numRows-1:
            a.append([e1 + e2 for (e1,e2) in zip(a[-1]+[0],[0]+a[-1]) ])
            numRows-=1
        return a

(1)zip()在py3中返回的是一个对象,需用list()强转才能直观显示

(2)杨辉三角形的第一行为1,第二行为11,第三行可看作是110 + 011 = 121,第四行可看作是1210+0121 = 1331……依此类推

(3)每一轮循环添加一个新行

posted @ 2018-05-04 20:44  kkkkkksssss  阅读(112)  评论(0编辑  收藏  举报