当前位置: 首页 > news >正文

力扣3464. 正方形上的点之间的最大距离

力扣3464. 正方形上的点之间的最大距离

题目

在这里插入图片描述

题目解析及思路

题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值

最大最小值的题一般直接想到二分

将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)**

枚举起点二分答案,每次用二分找到>= st + mid的最近的点

代码

class Solution {
public:
    int maxDistance(int side, vector<vector<int>>& points, int k) {
        vector<long long> a;
        for(auto& p:points){
            int x = p[0],y = p[1];
            if (x == 0) {
                a.push_back(y);
            } else if (y == side) {
                a.push_back(side + x);
            } else if (x == side) {
                a.push_back(side * 3LL - y);
            } else {
                a.push_back(side * 4LL - x);
            }
        }

        ranges::sort(a);

        auto check = [&](int mid)->bool{
            //枚举起点
            for(long long st : a){
                //最右边的点的边界,当坐标超过边界时,该点与起点的距离已经<mid了,不满足条件
                long long end = side * 4LL + st - mid;
                long long cur = st;
                //找剩下k-1个点
                for(int i=0;i<k-1;i++){
                    auto it = ranges::lower_bound(a,cur+mid);
                    if(it == a.end() || *it > end){
                        cur = -1;
                        break;
                    }
                    cur = *it;
                }
                if(cur > 0){
                    return true;
                }
            }
            return false;
        };
        int l = 1,r = side+1;
        while(l+1 < r){
            int mid = l + (r - l) / 2;
            if(check(mid)) l = mid;
            else r = mid;
        }
        return l;
    }
};

相关文章:

  • 【jira】用到几张表
  • rust笔记9-引用与原始指针
  • 免费PDF工具
  • 算法与数据结构(不同路径)
  • 滴水逆向_引用_友元函数_运算符重载
  • 机器学习数学基础:37.偏相关分析
  • java编译和c语言编译区别
  • CPU多级缓存机制
  • 前端面试题之HTML篇
  • 虚拟机PING不通百度?NAT是什么?什么仅主机?
  • HarmonyOS 5.0应用开发——鸿蒙接入高德地图实现POI搜索
  • 安装 Milvus Java SDK
  • 突破性能极限:DeepSeek开源FlashMLA解码内核技术解析
  • Oracle Fusion Middleware 12C安装 - 呆瓜式
  • 老张的仓库变形记:从算盘到AI的奇幻之旅
  • 【数据处理】COCO 数据集掩码 Run-Length Encoding (RLE) 编码转二进制掩码
  • 山东大学软件学院nosql实验一环境配置
  • C语言学习,希尔排序
  • 侯捷 C++ 课程学习笔记:C++ 标准库的体系结构与内核分析
  • WPF-Avalonia实践一两个页面的相关传递
  • 微信微网站怎么做/互联网推广平台有哪些公司
  • 顺德乐从有做阿里巴巴的网站吗/百度下载安装免费
  • 网站做担保交易/站长之家工具查询
  • 中小企业做网站贷款/网络营销的方式有哪些
  • 女网友叫我一起做优惠券网站/郑州网站推广效果
  • 做网站要学的知识/seo优化快速排名