leetcode 119 楊輝三角 II

2021-10-08 19:08:10 字數 1560 閱讀 3768

119. 楊輝三角 ii

給定乙個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。

在楊輝三角中,每個數是它左上方和右上方的數的和。

示例:輸入: 3

輸出: [1,3,3,1]

高階:你可以優化你的演算法到 o(k) 空間複雜度嗎?

使用遞迴法,超時!

class

solution

:def

getrow

(self, rowindex:

int)

-> list[

int]

: dic =

defsolve

(i,j)

:if i <

0or j <0:

return

if j ==0:

return

1if i == j:

return1if

(i,j)

in dic:

return dic[

(i,j)

] ans = solve(i-

1, j)

+ solve(i-

1, j-1)

return ans

res =

for j in

range

(rowindex+1)

:)return res

第二種使用公式法:

這裡沒有用上面的公式計算,而是用的另一種錯位相加的辦法。

例如

[1,1] + [0,1,1] = [1,2,1]

[1,2,1] + [0,1,2,1] = [1,3,3,1]

下面的row_right 表示右移一位,即左邊補0,起始還可以優化,因為是對稱的,所以可以計算減半。

class

solution

:def

getrow

(self, rowindex:

int)

-> list[

int]

: row_left =[1

] row_right =[1

]#row_right表示向右移動一位的列表

for i in

range(1

, rowindex+1)

: row_right =[0

]+ row_left#向右移位

for j in

range

(i):

#逐位相加

row_right[j]

= row_right[j]

+ row_left[j]

row_left = row_right#最後得到的值要賦值給左邊,因為右邊的列表在下一輪還會繼續右移

return row_right

LeetCode 119 楊輝三角

給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 1 輸入 3輸出 1 3,3,1 高階 你可以優化你的演算法到 o k 空間複雜度嗎?初始化前兩層,後面層直接累加左上方和右上方的數的和 class solution else if...

LeetCode 119 楊輝三角 II

給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3輸出 1,3,3,1 高階 你可以優化你的演算法到 o k 空間複雜度嗎?此題和上一題思想是一樣的,只不過我們用乙個temp陣列,分別在本行元素都建立出來並儲存到out後,將...

LeetCode 119 楊輝三角 II

給定乙個非負索引 k,其中 k 33,返回楊輝三角的第 k 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 3 輸出 1,3,3,1 高階 你可以優化你的演算法到 o k 空間複雜度嗎?實現 c class solution vectornewrow while row.size r...