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...