Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle.
Note that the row index starts from 0.
In Pascal's triangle, each number is the sum of the two numbers directly above it.
Example:
Input: 3 Output: [1,3,3,1] |
Follow up:
Could you optimize your algorithm to use only O(k) extra space?
本题要求是在O(k)的空间而非时间,因为看错题目浪费了很多时间,与 118. Pascal's Triangle 算法相同,计算每一行,但是只保存上一行就可以,同时注意,行数从0开始,python2.x没有list.copy(),因此使用的是python3执行
class Solution(object):
def getRow(self, rowIndex):
"""
:type rowIndex: int
:rtype: List[int]
"""
if rowIndex == 0:
return [1]
if rowIndex == 1:
return [1, 1]
pre = [1, 1]
current = []
for i in range(2, rowIndex + 1):
current.append(1)
for j in range(i - 1):
current.append(pre[j] + pre[j + 1])
current.append(1)
pre = current.copy()
current.clear()
return pre