動態規劃
#10_1.py
# 寫乙個函式,輸入 n ,求斐波那契(fibonacci)數列的第 n 項。斐波那契數列的定義如下:
class
solution
:def
fib(self, n:
int)
->
int:
if n==0:
return
0if n==1:
return
1 dp=[0
]*(n+1
) dp[0]
=0dp[1]
=1for i in
range(2
,n+1):
dp[i]
=dp[i-1]
+dp[i-2]
print
(dp)
return dp[-1
]%(1000000007
)
#10_2.py
# 乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。
class
solution
:def
numways
(self, n:
int)
->
int:
if n==0:
return
1if n==1:
return
1if n==2:
return
2 dp=[0
]*(n) dp[0]
=1dp[1]
=2for i in
range(2
,n):
dp[i]
=dp[i-1]
+dp[i-2]
print
(dp)
return dp[-1
]%(1000000007
)
#19.py
#請實現乙個函式用來匹配包含'. '和'*'的正規表示式。模式中的字元'.'表示任意乙個字元,而'*'表示它前面的字元可以出現任意次(含0次)。在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但與"aa.a"和"ab*a"均不匹配。
class
solution
:def
ismatch
(self, s:
str, p:
str)
->
bool
: slen=
len(s)
plen=
len(p)
dp=[[
false]*
(plen+1)
for _ in
range
(slen+1)
] dp[0]
[0]=
true
for i in
range
(plen)
:if p[i]
=="*"
: dp[0]
[i+1
]=dp[0]
[i-1
]for i in
range
(slen)
:for j in
range
(plen)
:if p[j]
=="."
or s[i]
==p[j]
: dp[i+1]
[j+1
]=dp[i]
[j]elif p[j]
=="*"
:if s[i]
!=p[j-1]
: dp[i+1]
[j+1
]=dp[i+1]
[j-1
]if p[j-1]
=="."
or s[i]
==p[j-1]
: dp[i+1]
[j+1]=
(dp[i]
[j+1
]| dp[i+1]
[j]| dp[i+1]
[j-1])
print
(dp)
return dp[-1
][-1
]
#48.py
# 請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。
# 示例 1:
# 輸入: "abcabcbb"
# 輸出: 3
# 解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
# 示例 2:
# 輸入: "bbbbb"
# 輸出: 1
# 解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
# 示例 3:
# 輸入: "pwwkew"
# 輸出: 3
# 解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
# 請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
class
solution
:def
lengthoflongestsubstring
(self, s:
str)
->
int:
tmp=
0 res=
0 d=
for i in
range
(len
(s))
: j=d.get(s[i],-
100)
d[s[i]]=i
if i-j<=tmp:
tmp=i-j
else
: tmp=tmp+
1 res=
max(res,tmp)
print
(res,tmp)
return res
劍指Offer(八) 動態規劃
給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1,m n 每段繩子的長度記為k 1 k m 請問k 1 x.xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。我們先定義函式f n 為把繩子剪成...
golang實現劍指offer 動態規劃題型
leetcode 面試題49 醜數 題目描述 我們把只包含因子 2 3 和 5 的數稱作醜數 ugly number 求按從小到大的順序的第 n 個醜數。示例 輸出 12 解釋 1,2,3,4,5,6,8,9,10,12 是前 10 個醜數。核心思想 解題思路 func nthuglynumber ...
劍指 offer 貪心 動態規劃篇
10 i.斐波拉契數列 題意 面試題10 i.斐波那契數列 思路 最基礎的動態規劃題。資料量比較大的時候不能使用遞迴,會報stackoverflow exception,最優的方式是迭代計算。class solution int a 0 int b 1 int index 2 int tmp whi...