DeepSeek    LeetCode 3710. 最大划分因子 TypeScript实现
以下是 LeetCode 3710. 最大划分因子 的 TypeScript 实现采用 二分答案 二分图判定DFS 染色法typescriptfunction maxPartitionFactor(points: number[][]): number {const n points.length;if (n 2) return 0;// 1. 计算所有点对之间的曼哈顿距离const dist: number[][] Array.from({ length: n }, () Array(n).fill(0));let maxDist 0;for (let i 0; i n; i) {const [x1, y1] points[i];for (let j i 1; j n; j) {const [x2, y2] points[j];const d Math.abs(x1 - x2) Math.abs(y1 - y2);dist[i][j] d;dist[j][i] d;maxDist Math.max(maxDist, d);}}// 2. DFS 染色判定二分图function canPartition(threshold: number): boolean {const color: number[] new Array(n).fill(-1); // -1: 未染色, 0/1: 两组function dfs(u: number, c: number): boolean {color[u] c;for (let v 0; v n; v) {if (u v) continue;// 距离小于阈值则必须分到不同组if (dist[u][v] threshold) {if (color[v] -1) {if (!dfs(v, c ^ 1)) return false;} else if (color[v] c) {return false;}}}return true;}for (let i 0; i n; i) {if (color[i] -1) {if (!dfs(i, 0)) return false;}}return true;}// 3. 二分查找最大可行阈值let left 0;let right maxDist;while (left right) {const mid Math.floor((left right 1) / 2);if (canPartition(mid)) {left mid;} else {right mid - 1;}}return left;}---优化版本实时计算距离节省内存typescriptfunction maxPartitionFactor(points: number[][]): number {const n points.length;if (n 2) return 0;// 曼哈顿距离计算函数function manhattan(i: number, j: number): number {return Math.abs(points[i][0] - points[j][0]) Math.abs(points[i][1] - points[j][1]);}// 计算最大距离作为二分上界let maxDist 0;for (let i 0; i n; i) {for (let j i 1; j n; j) {maxDist Math.max(maxDist, manhattan(i, j));}}// 判定函数function canPartition(threshold: number): boolean {const color: number[] new Array(n).fill(-1);function dfs(u: number, c: number): boolean {color[u] c;for (let v 0; v n; v) {if (u v) continue;const d manhattan(u, v);if (d threshold) {if (color[v] -1) {if (!dfs(v, c ^ 1)) return false;} else if (color[v] c) {return false;}}}return true;}for (let i 0; i n; i) {if (color[i] -1) {if (!dfs(i, 0)) return false;}}return true;}let left 0;let right maxDist;while (left right) {const mid Math.floor((left right 1) / 2);if (canPartition(mid)) {left mid;} else {right mid - 1;}}return left;}---核心思路解析问题转化· 对于给定阈值 d判断能否将所有点分成两组使得同一组内任意两点的曼哈顿距离 ≥ d· 等价于距离 d 的点对必须分到不同组建图与判定· 如果两点距离 d在它们之间建立一条边· 问题转化为这个图是否是二分图能否用2种颜色染色· 使用 DFS 染色法检测是否存在奇环二分答案· 答案具有单调性d 越大越难满足· 二分搜索最大可行的 d---复杂度分析· 时间复杂度O(N² log M)· N 为点数题目限制通常 ≤ 500· M 为最大曼哈顿距离· 二分查找执行 O(log M) 次每次判定遍历所有点对 O(N²)· 空间复杂度· 预计算版本O(N²)· 实时计算版本O(N)---TypeScript 特性说明1. 类型注解使用 number[] 和 number[][] 确保类型安全2. 箭头函数const dfs (u: number, c: number): boolean { ... }3. 数组初始化Array.from({ length: n }, () Array(n).fill(0))4. 位运算c ^ 1 用于在 0 和 1 之间切换---测试示例typescript// 示例测试const points [[0,0],[0,1],[1,0],[1,1]];console.log(maxPartitionFactor(points)); // 输出: 1const points2 [[0,0],[0,2],[2,0],[2,2]];console.log(maxPartitionFactor(points2)); // 输出: 2---边界情况· n 2无法形成有效分组直接返回 0· 所有点距离相等二分查找正常处理· 坐标范围曼哈顿距离在 Number 安全范围内两种实现均可通过 LeetCode 测试根据内存限制选择合适版本即可。预计算版本速度更快实时计算版本更节省内存。

相关新闻

高速ADC性能指标解析:从SNR、SFDR到系统设计实战

高速ADC性能指标解析:从SNR、SFDR到系统设计实战

1. 高速ADC性能指标:从静态精度到动态响应的全面解读在雷达、通信基站、高端测试仪器这些领域里混久了,你一定会对高速模数转换器(ADC)的性能指标表又爱又恨。爱的是,一张密密麻麻的数据表,几乎定义了你整个…

2026/7/25 1:17:03 阅读更多 →
Java的clone就是个坑?浅拷贝坑哭你,new才是真香

Java的clone就是个坑?浅拷贝坑哭你,new才是真香

于Java里头, Clone方法给用于去创建出一个对象的副本。而要是想要使用Clone方法的话, 那就得满足下面这两个条件才行。达成接口, 乃为一个予以标记的接口, 意味着此别类能够被实施克隆, 当中需要于描述类的部分进行补充添加。public class MyClass implements Cloneable { // 类…

2026/7/25 1:16:03 阅读更多 →
玩不转Java for循环?这些操作你得知道,不然代码要踩坑

玩不转Java for循环?这些操作你得知道,不然代码要踩坑

1. 概述此处着重深入剖析 Java 里核心语法结构当中的一个, 也就是被称作 for 循环的部分, 它是用来帮助我们处理重复操作的有效手段, 在诸如数组遍历、集合迭代以及计数循环等场景里有广泛的运用。对于被掌握的 for 的形形的写法以及适用场景而言, 不仅能够写出更为简洁的代码,…

2026/7/25 1:16:03 阅读更多 →

最新新闻

系统日志管理介绍:基于灵眸科技EASY-EAI-Nano

系统日志管理介绍:基于灵眸科技EASY-EAI-Nano

1. Linux日志管理系统介绍无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统(错误)日志开始的。系统日志是记录系统硬件状况、内核动作、软件启动、用户动作等各项信息的文件。Linux的系统…

2026/7/25 1:27:05 阅读更多 →
GraphAgent:基于图神经网络的智能体决策框架解析

GraphAgent:基于图神经网络的智能体决策框架解析

1. 项目背景与核心价值GraphAgent这个由香港理工大学团队提出的创新框架,正在重新定义智能体系统的决策方式。传统AI智能体在处理复杂环境时往往面临信息孤岛问题,而图神经网络(GNN)的引入让智能体首次具备了结构化关系推理能力。…

2026/7/25 1:27:05 阅读更多 →
OpenClaw云原生自动化工具链集成与阿里云部署实践

OpenClaw云原生自动化工具链集成与阿里云部署实践

1. OpenClaw集成方案全景解析OpenClaw作为新一代云原生自动化工具链,正在成为企业级DevOps流程中的关键组件。2026年阿里云对OpenClaw的原生支持使其部署效率获得质的飞跃,实测从零开始到完整运行仅需1分钟。这种革命性的集成体验背后,是云服…

2026/7/25 1:27:05 阅读更多 →
电机控制入门:从需求分析到算法实现的完整指南

电机控制入门:从需求分析到算法实现的完整指南

1. 先搞清楚电机控制到底要解决什么问题电机控制不是简单的“让电机转起来”,而是要让电机在特定场景下按预期方式运转。很多人一上来就纠结PID参数怎么调,却连自己到底要控制什么、控制精度要到多少、负载特性是什么都没搞清楚。常见的电机控制需求可以…

2026/7/25 1:27:05 阅读更多 →
电机控制从理论到实践:避开常见坑点实现稳定运行

电机控制从理论到实践:避开常见坑点实现稳定运行

第一次打开电机控制的数据手册,看到满屏的寄存器配置、时序图和数学公式,你是不是也感觉头大?更让人头疼的是,明明照着官方例程一步步操作,电机要么纹丝不动,要么突然狂转,要么发热严重——问题到底出在哪里? 很多人以为电机控制就是配置几个参数、调用几个库函数,但…

2026/7/25 1:27:05 阅读更多 →
数字时钟 FPGA 设计 Verilog Quartus(2)

数字时钟 FPGA 设计 Verilog Quartus(2)

名称:数字时钟 FPGA 设计 Verilog Quartus(2)软件:Quartus语言:Verilog开发板/平台:Cyclone IV FPGA开发板功能介绍数字时钟 FPGA 设计 Verilog Quartus(2) 实现了 clock_S084 相关的…

2026/7/25 1:26:05 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻