调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

给定一个方阵,其中每个单元(像素)非黑即白。设计一个算法,找出 4 条边皆为黑色像素的最大子方阵。

返回一个数组 [r, c, size] ,其中 rc 分别代表子方阵左上角的行号和列号,size 是子方阵的边长。若有多个满足条件的子方阵,返回 r 最小的,若 r 相同,返回 c 最小的子方阵。若无满足条件的子方阵,返回空数组。

示例 1:

输入:
[
   [1,0,1],
   [0,0,1],
   [0,0,1]
]
输出:[1,0,2]
解释:输入中 0 代表黑色,1 代表白色,标粗的元素即为满足条件的最大子方阵

示例 2:

输入:
[
   [0,1,1],
   [1,0,1],
   [1,1,0]
]
输出:[0,0,1]

提示:

  • matrix.length == matrix[0].length <= 200
通过次数
9.9K
提交次数
25.9K
通过率
38.3%


相关企业

提示 1
从蛮力解法开始。你能先试试最大的正方形吗?

提示 2
最大的正方形是N×N。所以你先试一下该正方形,如果可行,那么你便知道已经找到了最佳正方形。否则,可以尝试下一个最小的正方形。

提示 3
描述蛮力解法的时间复杂度。

提示 4
你能通过预处理来优化这个解决方案吗?

提示 5
你应该能在O(N^3)时间内完成,其中N是正方形一边的长度。

提示 6
当你检查一个特定的正方形是否有效时(所有边框为黑色),需要检查在一个坐标的上面(或下面)和这个坐标的左边(或右边)有多少个黑色像素。你能预先计算出给定单元格上面和左边的黑色像素的数量吗?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
运行和提交代码需要登录
matrix =
[[1,0,1],[0,0,1],[0,0,1]]
Source