Problem: https://leetcode.cn/problems/maximum-squar100169 e-area-by-removing-fences-from-a-field/description/
[TOC]
思路
遍历所有的横向栏杆与纵向栏杆,算出横向栏杆之间的差和纵向栏杆之间的差并存储两个集合,最终的答案就是两个集合的交集的平方
复杂度
时间复杂度:
O(m^2+n^2)
空间复杂度:
O(m+n)
Code
class Solution:def maximizeSquareArea(self, m: int, n: int, hFences: List[int], vFences: List[int]) -> int:ans = -1hFences.append(m)hFences.insert(0,1)row = set()for i in range(len(hFences)):for j in range(0,i):row.add(abs( hFences[i] - hFences[j] ))vFences.append(n)vFences.insert(0,1)col = set()for i in range(len(vFences)):for j in range(0,i):col.add(abs(vFences[i] - vFences[j]))if abs(vFences[i] - vFences[j]) in row :ans = max(ans,pow(abs(vFences[i] - vFences[j]),2))for val in row:if val in col:ans = max(ans,pow(val,2))return ans % 1_000_000_007 if