from typing import List
classSolution:deffindMin(self, nums: List[int])->int:
i =0
j =len(nums)-1while i < j:
m =(i + j)//2if nums[m]< nums[j]:
j = m
else:
i = m +1return nums[i]if __name__ =='__main__':
x = Solution()
s =[1,2,3,4]print(x.findMin(s))
10 正则表达式匹配(hard)
本题考虑因素细节较多,搞清状态方程即可
classSolution:defisMatch(self, s:str, p:str)->bool:
m =len(s)
n =len(p)
dp =[[0]*(n +1)for col inrange(m +1)]
dp[0][0]=1for i inrange(m +1):for j inrange(1, n +1):if p[j -1]=='*':if i ==0:
dp[i][j]= dp[i][j -2]elif p[j -2]=='.'or s[i -1]== p[j -2]:
dp[i][j]=max(dp[i -1][j], dp[i][j -2])else:
dp[i][j]= dp[i][j -2]elif i >0and(p[j -1]=='.'or s[i -1]== p[j -1]):
dp[i][j]= dp[i -1][j -1]return dp[m][n]==1
44、通配符匹配(hard)
本题相较于上题略简单
classSolution:defisMatch(self, s:str, p:str)->bool:
m =len(s)
n =len(p)
dp =[[0]*(n +1)for col inrange(m +1)]
dp[0][0]=1for i inrange(m +1):for j inrange(1, n +1):if p[j -1]=='*':
dp[i][j]= dp[i -1][j]| dp[i][j -1]elif i >0and(p[j -1]=='?'or s[i -1]== p[j -1]):
dp[i][j]= dp[i -1][j -1]return dp[m][n]==1if __name__ =='__main__':
x = Solution()
s =""
p ="*"print(x.isMatch(s, p))