Kimi    LeetCode 3464. 正方形上的点之间的最大距离 Python3实现
LeetCode 3464. 正方形上的点之间的最大距离 — Python3 实现题目概述给定正方形边长 side以及位于正方形边界上的若干点。需要从中选出 k 个点使得任意两点之间的最小曼哈顿距离最大化。- 曼哈顿距离|x1 - x2| |y1 - y2|- 关键约束k 25points.length 15000核心思路这是一个经典的 最大化最小值 问题标准解法是二分答案 可行性检验。关键观察1. 答案上界为 side因为 k 4至少有两个点在同一条边上或相邻边上而同一/相邻边上的点距离最大为 side当 k4 时选四个角最小距离恰好为 side。2. 展开为正方形周长将正方形边界展开为一维环形数组周长 4 * side按顺时针顺序排列所有点。这样相邻点之间的距离可以用曼哈顿距离表示。展开映射规则- 左边 x0d y- 上边 ysided side x- 右边 xsided 3 * side - y- 下边 y0d 4 * side - x3. 可行性检验对于候选距离 limit检查是否能选出 k 个点使得相邻点包括首尾环绕的曼哈顿距离都 limit。由于 k 25可以枚举每个点作为起点贪心选择下一个满足距离要求的点。Python3 实现pythonimport bisectfrom typing import Listclass Solution:def maxDistance(self, side: int, points: List[List[int]], k: int) - int:二分答案 贪心可行性检验将正方形边界展开为一维环形数组n len(points)positions []# 将边界点展开为一维坐标顺时针方向for x, y in points:if x 0:# 左边从 (0,0) 向上到 (0, side)d yelif y side:# 上边从 (0, side) 向右到 (side, side)d side xelif x side:# 右边从 (side, side) 向下到 (side, 0)d 3 * side - yelse:# 下边从 (side, 0) 向左到 (0, 0)d 4 * side - xpositions.append(d)positions.sort()perimeter 4 * sidedef can_pick(limit: int) - bool:检查是否能选出 k 个点相邻点距离 limit包括首尾环绕# 枚举每个点作为起点for start_idx in range(n):start positions[start_idx]# 最后一个点不能超过 start perimeter - limit保证首尾环绕距离 limitlast_allowed start perimeter - limitcurrent startpicked 1for _ in range(k - 1):# 找下一个 current limit 的点next_idx bisect.bisect_left(positions, current limit)# 如果超出数组范围或者超出 last_allowed则失败if next_idx n or positions[next_idx] last_allowed:breakcurrent positions[next_idx]picked 1else:# 成功选了 k 个点return Truereturn False# 二分搜索答案 [1, side]left, right 1, sideans 0while left right:mid (left right) // 2if can_pick(mid):ans midleft mid 1else:right mid - 1return ans复杂度分析- 时间复杂度O(n log n n * k * log n * log side)- 排序O(n log n)- 二分答案O(log side) 次- 每次检验枚举 n 个起点每个起点贪心选 k 个点每次用二分查找 O(log n)- 由于 k 25实际运行很快- 空间复杂度O(n)示例验证输入 输出 说明side2, points[[0,2],[2,0],[2,2],[0,0]], k4 2 四个角最小距离为 2side2, points[[0,0],[1,2],[2,0],[2,2],[2,1]], k4 1 选 (0,0), (2,0), (2,2), (2,1)side2, points[[0,0],[0,1],[0,2],[1,2],[2,0],[2,2],[2,1]], k5 1 选 (0,0), (0,1), (0,2), (1,2), (2,2)注意事项上述实现基于 展开贪心 的经典方法。但需要注意在展开为一维坐标后相邻边的点之间的曼哈顿距离与一维距离的关系需要仔细处理。对于 limit side 的情况展开方法能正确工作因为- 同一边上的点一维距离 曼哈顿距离- 相邻边上的点一维距离 曼哈顿距离- 对边上的点曼哈顿距离 side limit不会成为瓶颈如果追求更严谨的实现可以参考使用 双端队列 DP 的方法如搜索结果中的 Sequence 类实现它直接在二维坐标上用滑动窗口维护最长合法子序列。

相关新闻

六西格玛在AI与云原生时代的实战重构:女性技术专家的质量方法论

六西格玛在AI与云原生时代的实战重构:女性技术专家的质量方法论

1. 项目概述:一场聚焦女性科技从业者的行业活动,为何以“Sixies”为名?“Women Working in Tech Event Features Sixies”——这个标题乍看像一则简讯,但拆开来看,信息量远超表面。“Women Working in Tech”直指核心人…

2026/7/5 13:58:15 阅读更多 →
一线老师傅经验谈:选对海绵喷胶源头厂家,粘接寿命延长8年

一线老师傅经验谈:选对海绵喷胶源头厂家,粘接寿命延长8年

最容易被忽视的胶水,正在吃掉你30%的利润早些年我也走过弯路,总觉得海绵喷胶这种大通货,哪家便宜就用哪家,结果频繁出现**开胶起泡**。最严重的一个月,车间返工率飙升到**23%**,光是拆解、擦胶、重新喷涂的…

2026/7/5 13:54:14 阅读更多 →
MAA明日方舟助手:5个实用功能让你轻松实现游戏日常自动化

MAA明日方舟助手:5个实用功能让你轻松实现游戏日常自动化

MAA明日方舟助手:5个实用功能让你轻松实现游戏日常自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://…

2026/7/5 13:52:14 阅读更多 →

最新新闻

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界

告别格式障碍:SketchUp STL插件让你的3D设计轻松走进现实世界 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是…

2026/7/5 14:58:26 阅读更多 →
4-20mA电流环检测与PIC单片机信号处理方案

4-20mA电流环检测与PIC单片机信号处理方案

1. 4-20mA电流环基础与行业应用工业现场最可靠的信号传输方式莫过于4-20mA电流环,这个看似简单的标准已经统治过程控制领域半个多世纪。电流信号相比电压信号具有显著优势:抗干扰能力强,可长距离传输(理论可达数公里)&…

2026/7/5 14:56:26 阅读更多 →
6. 【C语言】格式化输入输出:和程序说说话

6. 【C语言】格式化输入输出:和程序说说话

前面五篇文章,我们熟悉了变量、常量、数据类型,但程序还像个闷葫芦——要么沉默不语,要么只喊一句固定的“Hello, World”。要让程序真正和人互动,就得学会两样本事: 输出:把数据展示给用户看(…

2026/7/5 14:56:25 阅读更多 →
MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场

MWC26 上海开幕,人形机器人点球大战、Agentic AI 成主角——智能体从概念走向赛场 6 月 24 日,MWC26 上海世界移动通信大会开幕。今年最大的看点不是 5G,不是 6G,而是人工智能。 人形机器人点球大战 MWC26 上海首次举办了"人…

2026/7/5 14:52:25 阅读更多 →
2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

2026 AI 开发者生存指南(10):AI 开发者职业发展与学习路线图——从入门到精通

AI 开发者职业发展与学习路线图 2026 版:从入门到精通怎么走? 2026 年的 AI 行业,招聘需求在变、技能要求在变、薪资结构在变。不管是刚入行还是想转型,都需要一张清晰的路线图。 这篇文章整理 AI 开发者的职业发展路径和学习方向…

2026/7/5 14:52:25 阅读更多 →
Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现

Unreal Engine 5体积渲染架构深度解析:OpenVDB与NanoVDB集成技术实现 【免费下载链接】unreal-vdb This repo is a non-official Unreal plugin that can read OpenVDB and NanoVDB files in Unreal. 项目地址: https://gitcode.com/gh_mirrors/un/unreal-vdb …

2026/7/5 14:52:25 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻