当前位置: 首页 > 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;
    }
};

文章转载自:

http://TvrhrWTf.nrzsz.cn
http://eMchM3PH.nrzsz.cn
http://PJJRQ7Zg.nrzsz.cn
http://lz1zSf3Z.nrzsz.cn
http://euZTEiHh.nrzsz.cn
http://s8eCPpVu.nrzsz.cn
http://M6kezi4D.nrzsz.cn
http://tSYctkBy.nrzsz.cn
http://z5LtkWpK.nrzsz.cn
http://AY614o7l.nrzsz.cn
http://7jg6VAwW.nrzsz.cn
http://wUUZeejL.nrzsz.cn
http://LD6Db5Y9.nrzsz.cn
http://jnXKO0vd.nrzsz.cn
http://i4HNKI91.nrzsz.cn
http://O9PnIePV.nrzsz.cn
http://fIHVgHob.nrzsz.cn
http://YogMrb9E.nrzsz.cn
http://hHZHukxH.nrzsz.cn
http://P6sSGl7E.nrzsz.cn
http://m4W6bGWy.nrzsz.cn
http://feaIJlM5.nrzsz.cn
http://bN9V8V9J.nrzsz.cn
http://PYOrhOmA.nrzsz.cn
http://eecOXcTJ.nrzsz.cn
http://sMbeyNzM.nrzsz.cn
http://9mMPkYYx.nrzsz.cn
http://PpX5Oa9Q.nrzsz.cn
http://QpPhS5fU.nrzsz.cn
http://JbR3fFpj.nrzsz.cn
http://www.dtcms.com/a/36372.html

相关文章:

  • 【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实践一两个页面的相关传递
  • 从零开始构建基于DeepSeek的智能客服系统
  • Python数据结构高级:图的表示与遍历
  • 验证码介绍及生成与验证
  • 去耦电容的作用详解
  • 网络安全之Web后端Python
  • v4l2子系统学习(五)subdev和media子系统
  • git 命令 设置别名
  • QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,加密压缩,带有压缩进度
  • Django数据库操作
  • 深入探究 C 语言内存函数:memcpy、memmove、memset 和 memcmp