日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

一般动态规划问题合集(Leetcode题解-Python语言)

發布時間:2023/12/4 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一般动态规划问题合集(Leetcode题解-Python语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

118. 楊輝三角

class Solution:def generate(self, numRows: int) -> List[List[int]]:dp = [[0] * i for i in range(1, numRows+1)]for i in range(numRows):for j in range(len(dp[i])):# 左右兩邊是1,中間部分就是其上方兩個數之和if j == 0 or j == i:dp[i][j] = 1else: dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]return dp

楊輝三角其實就是利用遞推思想建立的,從上一層的數值得到下一層數值。因此可以利用動態規劃,每層最左邊和右邊的元素都是1,而中間的元素由上一層的兩個元素求和得到。

119. 楊輝三角 II

class Solution:def getRow(self, rowIndex: int) -> List[int]:dp = [[0] * i for i in range(1, rowIndex+2)]for i in range(rowIndex+1):for j in range(len(dp[i])):# 左右兩邊是1,中間部分就是其上方兩個數之和if j == 0 or j == i:dp[i][j] = 1else: dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]return dp[-1]

與上一題一樣,只是要求單層的元素而已。

1277. 統計全為 1 的正方形子矩陣

class Solution:def countSquares(self, matrix: List[List[int]]) -> int:m, n = len(matrix), len(matrix[0])dp = [[0] * n for _ in range(m)]ans = 0for i in range(m):for j in range(n):if i == 0 or j == 0:dp[i][j] = matrix[i][j]elif matrix[i][j] == 0:dp[i][j] = 0else:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1ans += dp[i][j]return ans

思路是用 dp[i][j] 表示以 (i, j) 為右下角的正方形的最大邊長,然后用動態規劃得到所有位置的值,過程中用 ans 記錄所有邊長的總數(即為正方形子矩陣的總數)。關鍵是求出狀態轉移方程,求法見官方題解。

221. 最大正方形

class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:m, n = len(matrix), len(matrix[0])dp = [[0] * n for _ in range(m)]ans = 0for i in range(m):for j in range(n):if i == 0 or j == 0:dp[i][j] = int(matrix[i][j])elif int(matrix[i][j]) == 0:dp[i][j] = 0else:dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1if dp[i][j] > ans:ans = dp[i][j]return ans ** 2

與上一題類似,這里只需要記錄最大的正方形邊長,則最大的正方形面積就是邊長求平方。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的一般动态规划问题合集(Leetcode题解-Python语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。