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;
    }
};
相关推荐
罗西的思考10 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
CSharp精选营12 小时前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
美团技术团队13 小时前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC1 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC1 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode
BadBadBad__AK1 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
_清歌2 天前
DSpark 深度解读:DeepSeek-V4 如何用「半自回归」把推理速度提升 85%
算法
统计实现局2 天前
SVD 的三步走:双对角化、Givens 收敛、排序
算法
躬行见万象2 天前
《VLA 系列》UniLab 强化训练 | G1 机器人 |复现
算法