leetcode 2975

2975: 移除栅栏得到的正方形田地的最大面积

思路:暴力枚举正方形所有可能的边长

水平栅栏和垂直栅栏分开计算。

  • 对于水平栅栏,++任意两个栅栏之间的距离++(中间的栅栏全部删除)都可能是正方形的边长,存到一个哈希表 hSet 中。
  • 对于垂直栅栏,任意两个栅栏之间的距离(中间的栅栏全部删除)都可能是正方形的边长,存到一个哈希表 vSet 中。

答案是 hSet 和 vSet ++交集中的最大值++的平方,记得返回之前取模。如果交集为空,返回 −1。

复制代码
class Solution {
public:
    int maximizeSquareArea(int m, int n, vector<int>& hFences, vector<int>& vFences) {
        constexpr int MOD=1'000'000'007;
        auto f=[&](vector<int>& nums,int x)->unordered_set<int>{
            unordered_set<int> st; //正方形可能边长
            nums.push_back(1);
            nums.push_back(x);
            sort(nums.begin(),nums.end());
            for(int i=0;i<nums.size();i++){
                for(int j=i+1;j<nums.size();j++){
                    int d=nums[j]-nums[i];
                    if(d>0) st.insert(d);
                }
            }
            return st;
        };
        unordered_set<int> h=f(hFences,m);
        unordered_set<int> v=f(vFences,n);
        int best=-1;
        for(int x:h) if(v.count(x)) best=max(best,x);
        return best==-1 ? -1:(long long)best*best%MOD;
    }
};
相关推荐
明月_清风35 分钟前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go
渡我白衣38 分钟前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
hetao17338371 小时前
2026-09-01~09-04 hetao1733837 的刷题记录
c++·算法
Evand J1 小时前
【MATLAB例程,图像滤波5】 反谐波均值滑动窗口滤波(CHMF)图像降噪与质量评价,附代码下载链接
图像处理·算法·计算机视觉·matlab·均值算法·滑动窗口滤波·均值滑动
血小板要健康2 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
a187927218312 小时前
【算法】回溯算法(三):三记重锤与 N 皇后——记忆化、状态设计与三层漏斗
算法·leetcode·go·剪枝·回溯·n皇后·算法讲解
HugoStudio_SWAN4 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
青 春 记 忆4 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
阳明山水5 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技6 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算