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

Leetcode 3710. Maximum Partition Factor

  • Leetcode 3710. Maximum Partition Factor
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3710. Maximum Partition Factor

1. 解题思路

这一题思路上首先是一个二分法的思路,我们找到最大的临界距离,使得当任何大于该距离的情况下,无论怎么切分点集,都至少有一侧存在两个点之间的曼哈顿距离小于该给定距离。

此时,我们只需要构造一个函数is_possible(d),表示在给定距离ddd的情况下,是否存在一个分割方式,使得两侧的点集均满足两两之间不存在小于距离ddd的点对。

而要做到这件事,我们首先需要两两求出所有点对之间的距离,然后将其顺序排列。对于任意给定的ddd,要判断构造方式是否存在,我们只需要考虑所有距离小于ddd的点对,看看是否存在一个分割方法使得所有这些点对中的点均不处于同一个集合当中即可,至于剩下的那些点,我们任意分配即可。

而要做到这件事,我们只需要做一个广度优先遍历即可,我们首先考察任意一个点,如果该点已经考察过了,那么直接跳过,否则我们就将其任意放到一个点集当中(不妨设为aaa),那么与之相连的其他点都必然得放到另一个点集bbb当中,同理这些点的相连点也同样必须得放到aaa点集当中,往复循环,直至对所有的点均进行一次分配,或者遇到了矛盾情况即可。

2. 代码实现

给出python代码实现如下:

class Solution:def maxPartitionFactor(self, points: List[List[int]]) -> int:n = len(points)if n == 2:return 0distances = []for i in range(n-1):for j in range(i+1, n):d = abs(points[i][0] - points[j][0]) + abs(points[i][1] - points[j][1])distances.append((d, i, j))distances = sorted(distances)def is_possible(d):graph = defaultdict(list)for _d, u, v in distances:if _d >= d:breakgraph[u].append(v)graph[v].append(u)nodes = sorted(graph.keys(), key=lambda x: len(graph[x]), reverse=True)a, b = set(), set()for u in nodes:if u in a or u in b:continueq = [(u, 0)]while q:u, g = q.pop()current, neighbor = (a, b) if g == 0 else (b, a)if u in current:continueif u in neighbor:return Falsecurrent.add(u)for v in graph[u]:if v in current:return Falseelif v in neighbor:continueq.append((v, 1-g))return Truei, j = distances[0][0], distances[-1][0]+1while j > i+1:d = (i+j) // 2if is_possible(d):i = delse:j = dreturn i

提交代码评测得到:耗时1184ms,占用内存33.98MB。

http://www.dtcms.com/a/477821.html

相关文章:

  • 亚马逊,塔吉特采购测评:高砍单率核心原因及技术破解策略
  • SQLite3数据库——Linux应用
  • 人机关系中“看不见的手”
  • 上街区网站建设做网站用什么系统好
  • k8s cert-manager cert-manager-webhook-xxx pod 证书过期问题处理
  • 宝塔服务器磁盘爆满:占用50G磁盘空间的.forever日志文件处理导致服务崩溃的教训
  • Docker资源限制全解析
  • 毫米级的安全舞蹈
  • 成都网站专业制作一造和一建哪个难度大
  • 解码AI智能体的大脑:Function Calling 与 ReAct 策略深度对决
  • K8s多租户方案指南--图文篇
  • 去一个新公司~重新设置git信息,clone项目 ~需要做的
  • wordpress 自动标签插件廊坊seo推广
  • Abase 数据库:永久关闭 misopt_preventing 选项的方法
  • 基于单片机的智能洗碗机设计
  • 网站策划书ppt9377白蛇传奇
  • 从Wireshark到Mitmproxy:网络数据侦探——抓包工具在爬虫开发中的艺术与科学之“HTTPS全流量解密实战”
  • HTTP与HTTPS的五大核心区别
  • 关于2025.10.13力扣每日的学习
  • Hive 删除分区语句卡死问题
  • 19.1 TCP 和 UDP 有什么区别?
  • 汇编和C语言结构
  • 单页网站的营销高端渠道开发
  • 定制网站建设公司哪家便宜seo免费课程
  • 【密码学实战】openHiTLS server命令行:搭建国密标准安全通信服务器
  • AWS RDS (MySQL)蓝绿部署常见误区
  • 工信部发布→《云计算综合标准化体系建设指南(2025版)》
  • K8S重启引发的RocketMQ消息丢失问题记录
  • K8S(七)—— Kubernetes Pod 进阶配置与生命周期管理全解析
  • 主题库 1.15 | 提供风景、动漫、明星、动物等多种类型的高清壁纸,轻松更换手机壁纸