leetcode 118 楊輝三角

2021-10-08 19:06:03 字數 1418 閱讀 3192

118. 楊輝三角

給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。

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

示例:輸入: 5

輸出:[

[1],

[1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]

]使用遞迴去解決因為有遞迴公式:

f (i

,j)=

f(i−

1,j−

1)+f

(i−1

,j

)f(i,j) = f(i-1,j-1)+f(i-1,j)

f(i,j)

=f(i

−1,j

−1)+

f(i−

1,j)

i f(

j==0

):f(

i,j)

=1

if (j ==0): f(i,j) = 1

if(j==

0):f

(i,j

)=1if(

i==j

):f(

i,j)

=1

if (i ==j): f(i,j) = 1

if(i==

j):f

(i,j

)=1同時在遞迴的過程中還有大量的重複計算,這裡建立了乙個字典記錄重複的數值,減少運算的時間。

class

solution

:def

generate

(self, numrows:

int)

-> list[list[

int]]:

dic =

defsolve

(i,j)

:if i <

0or j <0:

return

if(i,j)

in dic:

return dic[

(i,j)

]if i == j:

return

1if j ==0:

return

1 ans = solve(i-

1, j)

+ solve(i-

1, j-1)

dic[

(i,j)

]= ans

return ans

# print(solve(4,2))

out =

for i in

range

(numrows)

: res =

for j in

range

(i+1):

)return out

leetcode 118 楊輝三角

前言 python刷leetcode題解答目錄索引 正文 給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 class solution def g...

LeetCode 118 楊輝三角

給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 這個問題可以使用動態規劃的方法來解決 c class solution for int i 0 i...

leetcode 118 楊輝三角

每一行的頭和尾元素均初始化為1 中間元素由上層 i 1 j 1 i 1 j 構成 每行的長度可以預先確定。class solution def generate self,numrows int list list int ans for i in range numrows row 0 i 1 r...