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;
    }
};
相关推荐
小O的算法实验室15 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
‎ദ്ദിᵔ.˛.ᵔ₎15 小时前
LIST 的相关知识
数据结构·list
M--Y16 小时前
Redis常用数据类型
数据结构·数据库·redis
郭涤生16 小时前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法
༾冬瓜大侠༿16 小时前
vector
c语言·开发语言·数据结构·c++·算法
Ricky111zzz17 小时前
leetcode学python记录1
python·算法·leetcode·职场和发展
汀、人工智能17 小时前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****17 小时前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯
汀、人工智能17 小时前
[特殊字符] 第79课:分割等和子集
数据结构·算法·数据库架构·位运算·哈希表·分割等和子集
汀、人工智能17 小时前
[特殊字符] 第74课:完全平方数
数据结构·算法·数据库架构·图论·bfs·完全平方数