题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,给一个矩形,这个矩形已经被分割成了多个 1x1 正方形,又给了两个边集,现在只能从边集删边,求删边后矩形中能有的面积最大的正方形。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution:
# 返回 a 排序后的最长连续递增子数组的长度
def f(self, a: List[int]) -> int:
a.sort()
mx = cnt = 0
for i, x in enumerate(a):
if i > 0 and x == a[i - 1] + 1:
cnt += 1
else:
cnt = 1 # 重新计数
mx = max(mx, cnt)
return mx

def maximizeSquareHoleArea(self, n: int, m: int, hBars: List[int], vBars: List[int]) -> int:
side = min(self.f(hBars), self.f(vBars)) + 1
return side * side