最大正方形Python解法
生活随笔
收集整理的這篇文章主要介紹了
最大正方形Python解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一個由 '0' 和 '1' 組成的二維矩陣內,找到只包含 '1' 的最大正方形,并返回其面積。
例:
輸入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
輸出:4
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/maximal-square
?
解析:
動態(tài)規(guī)劃,dp數組,邊界情況為1直接填1,否則填0。其他位置,因為是正方形,所以左邊和上邊的值中短的一條邊加上左上角使我們的判斷條件,因為我們求的是右下角的位置。知道這個規(guī)則就可以填寫dp數組了。
class Solution(object):def maximalSquare(self, matrix):""":type matrix: List[List[str]]:rtype: int"""if len(matrix) == 0 or len(matrix[0]) == 0: # 判空return 0maxSide = 0 # 最長邊的長度rows, columns = len(matrix), len(matrix[0]) # 獲取長和寬dp = [[0] * columns for _ in range(rows)] # 初始化dp數組for i in range(rows): # 遍歷for j in range(columns):if matrix[i][j] == '1': # 有值才有正方形if i == 0 or j == 0: # 邊界情況dp[i][j] = 1else:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1 # 主要判斷方法maxSide = max(maxSide, dp[i][j]) # 去最大值maxSquare = maxSide * maxSide # 求面積return maxSquare總結
以上是生活随笔為你收集整理的最大正方形Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迷你世界怎么做会动的汽车
- 下一篇: python3字符串转数字_Python