目录
1.5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)
2.22. 括号生成 - 力扣(LeetCode) (leetcode-cn.com)
3.45. 跳跃游戏 II - 力扣(LeetCode) (leetcode-cn.com)
4.64. 最小路径和 - 力扣(LeetCode) (leetcode-cn.com)
1.5. 最长回文子串 - 力扣(LeetCode) (leetcode-cn.com)
class Solution:
def longestPalindrome(self, s: str) -> str:
dp=[[False for i in range(len(s))]for j in range(len(s))]
n=len(s)
# for i in range(n):
# for j in range(i):
# dp[i][j]=True
left,right=-1,-1
maxlength=-1
for length in range(1,n+1):
for l in range(n):
r=l+length-1
if r>=n:
break
if length==1:
dp[l][r]=True
else:
if s[l]==s[r]:
if l==r-1:
dp[l][r]=True
else:
dp[l][r]=dp[l+1][r-1]
if dp[l][r] and length>maxlength:
left,right,maxlength=l,r,length
return(s[left:right+1])
2.22. 括号生成 - 力扣(LeetCode) (leetcode-cn.com)
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result=[]
def dfs(path,curl,curr):
if curl==0:
result.append(path+")"*curr)
return
dfs(path+"(",curl-1,curr)
if curr>curl:
dfs(path+")",curl,curr-1)
dfs("",n,n)
return result
3.45. 跳跃游戏 II - 力扣(LeetCode) (leetcode-cn.com)
class Solution:
def jump(self, nums: List[int]) -> int:
n=len(nums)
dp=[1<<31 for i in range(n)]
dp[0]=0
for i in range(n):
if dp[i]!=1<<31:
for j in range(i+1,i+nums[i]+1):
if j>n-1:
break
dp[j]=min(dp[j],1+dp[i])
return dp[-1]
4.64. 最小路径和 - 力扣(LeetCode) (leetcode-cn.com)
class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
m=len(grid)
n=len(grid[0])
n,m=m,n
dp=[[1<<31 for i in range(m)]for j in range(n)]
dp[0][0]=grid[0][0]
for i in range(1,n):
dp[i][0]=dp[i-1][0]+grid[i][0]
for i in range(1,m):
dp[0][i]=dp[0][i-1]+grid[0][i]
for i in range(1,n):
for j in range(1,m):
dp[i][j]=min(dp[i][j],grid[i][j]+dp[i-1][j],grid[i][j]+dp[i][j-1])
return dp[-1][-1]