题目:
Given an index k, return the kth row of the Pascal’s triangle.
For example, given k = 3,
Return [1,3,3,1].
Note:
Could you optimize your algorithm to use only O(k) extra space?
方法一:性能52ms
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
rowNumber = rowIndex +1
ret = []
for i in range(rowNumber):
ret.append([1])
for j in range(1, i+1):
if j == i:
ret[i].append(1)
else:
ret[i].append(ret[i-1][j-1]+ret[i-1][j])
return ret[rowIndex]
方法二:性能36ms
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
return self.generate(rowIndex+1)[-1]
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
ls = []
for i in range(numRows):
nested_ls = []
for j in range(i + 1):
if j == 0 or j == i:
nested_ls.append(1)
else:
nested_ls.append(ls[i - 1][j - 1] + ls[i - 1][j])
ls.append(nested_ls)
return ls
思考:性能差异是什么造成的?