【发布时间】:2018-03-27 19:47:23
【问题描述】:
我正在尝试解决一个问题,其中我必须在矩阵中找到 1 的最大平方,仅包含零和一。
完整声明在这里:https://leetcode.com/problems/maximal-square/description/
我的解决办法是:
def maximalSquare(matrix):
"""
:type matrix: List[List[str]]
:rtype: int
"""
if len(matrix)==0:
return 0
maxlen = 0
dp = [[0 for x in range(len(matrix[0])+1)] for x in range(len(matrix)+1)]
for i in range(1, len(matrix)+1):
for j in range(1, len(matrix[0])+1):
if matrix[i-1][j-1]==1:
dp[i][j] = min(dp[i-1][j], dp[i-1][j-1], dp[i][j-1]) + 1
maxlen = max(dp[i][j], maxlen)
return maxlen
示例运行:
Your input
[["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
Your answer
0
Expected answer
4
现在,我的逻辑很简单:如果有三个 L 形排列,第四个表示存在一个正方形。
但是答案相差很多,我真的找不到错误是什么。
【问题讨论】:
-
我没有运行你的示例或尝试过这个编码挑战,但你的输入都是字符串。您是否尝试将它们强制转换为 int?
-
@krflol 即使在 if 条件中将 1 放在引号中也会给出错误答案
-
你不能对这样的字符串做数学运算。将其转换为 int,不要尝试将其作为字符串运行
-
也许你的预期结果确实是正确的,但我发现在修复 1/"1" 问题后,我得到的结果对应于正方形的边,所以 2 表示四个,3 表示 9 个,以此类推
-
顺便试试更简单的测试用例,比如 2x2 和 3x3 的。
标签: python algorithm matrix data-structures dynamic-programming