1. 程式人生 > >LeetCode(Python版)——119. Pascal's Triangle II

LeetCode(Python版)——119. Pascal's Triangle II

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