【问题标题】:Error in finding the maximum square of 1s inside a matrix在矩阵内找到 1 的最大平方时出错
【发布时间】: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


【解决方案1】:

由于矩阵包含字符串,所以比较应该是

matrix[i-1][j-1]=="1"

而不是

matrix[i-1][j-1]==1

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2015-05-17
    • 2023-03-14
    • 2020-06-05
    • 2013-07-21
    • 1970-01-01
    • 2016-04-20
    • 2011-04-17
    相关资源
    最近更新 更多