文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目标题和出处标题两地调度出处1029. 两地调度难度4 级题目描述要求公司计划面试2n \texttt{2n}2n人。给定一个数组costs \texttt{costs}costs其中costs[i] [aCost i , bCost i ] \texttt{costs[i] [aCost}_\texttt{i}\texttt{, bCost}_\texttt{i}\texttt{]}costs[i] [aCosti, bCosti]表示第i \texttt{i}i人飞往 A 市的费用为aCost i \texttt{aCost}_\texttt{i}aCosti飞往 B 市的费用为bCost i \texttt{bCost}_\texttt{i}bCosti。返回当每个城市都有n \texttt{n}n人抵达的情况下将每个人都飞到其中一座城市的最低费用。示例示例 1输入costs [[10,20],[30,200],[400,50],[30,20]] \texttt{costs [[10,20],[30,200],[400,50],[30,20]]}costs [[10,20],[30,200],[400,50],[30,20]]输出110 \texttt{110}110解释第一个人去 A 市费用为10 \texttt{10}10。第二个人去 A 市费用为30 \texttt{30}30。第三个人去 B 市费用为50 \texttt{50}50。第四个人去 B 市费用为20 \texttt{20}20。最低总费用为10 30 50 20 110 \texttt{10} \texttt{30} \texttt{50} \texttt{20} \texttt{110}10305020110每个城市都有一半的人在面试。示例 2输入costs [[259,770],[448,54],[926,667],[184,139],[840,118],[577,469]] \texttt{costs [[259,770],[448,54],[926,667],[184,139],[840,118],[577,469]]}costs [[259,770],[448,54],[926,667],[184,139],[840,118],[577,469]]输出1859 \texttt{1859}1859示例 3输入costs [[515,563],[451,713],[537,709],[343,819],[855,779],[457,60],[650,359],[631,42]] \texttt{costs [[515,563],[451,713],[537,709],[343,819],[855,779],[457,60],[650,359],[631,42]]}costs [[515,563],[451,713],[537,709],[343,819],[855,779],[457,60],[650,359],[631,42]]输出3086 \texttt{3086}3086数据范围2 × n costs.length \texttt{2} \times \texttt{n} \texttt{costs.length}2×ncosts.length2 ≤ costs.length ≤ 100 \texttt{2} \le \texttt{costs.length} \le \texttt{100}2≤costs.length≤100costs.length \texttt{costs.length}costs.length为偶数1 ≤ aCost i , bCost i ≤ 1000 \texttt{1} \le \texttt{aCost}_\texttt{i}\texttt{, bCost}_\texttt{i} \le \texttt{1000}1≤aCosti, bCosti≤1000解法思路和算法为了计算每个城市都有n nn人抵达的最低费用可以首先计算全部2 n 2n2n人都抵达 A 市的总费用total \textit{total}total然后选其中n nn人换到 B 市更新总费用并使总费用最低。对于0 ≤ i 2 n 0 \le i 2n0≤i2n将第i ii人从 A 市换到 B 市之后总费用total \textit{total}total变成total ( bCost i − aCost i ) \textit{total} (\textit{bCost}_i - \textit{aCost}_i)total(bCosti−aCosti)。以下将每个人抵达 B 市的费用与抵达 A 市的费用之差称为费用差即费用差为bCost − aCost \textit{bCost} - \textit{aCost}bCost−aCost费用差可能是正数、零或负数。为了使总费用最低应使抵达 B 市的n nn个人的费用差之和最小化因此应选费用差最小的n nn个人。该做法是贪心策略贪心策略的正确性说明如下。假设全部2 n 2n2n人都抵达 A 市的总费用是total \textit{total}total费用差最小的n nn个人的费用差之和是x xx则费用差最小的n nn个人抵达 B 市的情况下总费用是total x \textit{total} xtotalx。如果选一个费用差更大的人抵达 B 市则需要替换费用差最小的n nn个人之一替换之后抵达 B 市的n nn个人的费用差之和一定大于等于x xx总费用一定大于等于total x \textit{total} xtotalx不可能有更低的总费用。因此选费用差最小的n nn个人可以使总费用最低。具体做法如下。计算全部2 n 2n2n人都抵达 A 市的总费用total \textit{total}total。创建长度为2 n 2n2n的数组differences \textit{differences}differences记录每个人的费用差对于0 ≤ i 2 n 0 \le i 2n0≤i2n计算differences [ i ] costs [ i ] [ 1 ] − costs [ i ] [ 0 ] \textit{differences}[i] \textit{costs}[i][1] - \textit{costs}[i][0]differences[i]costs[i][1]−costs[i][0]。将数组differences \textit{differences}differences按升序排序。遍历数组differences \textit{differences}differences的前n nn个元素即最小的n nn个元素对于0 ≤ i n 0 \le i n0≤in将total \textit{total}total更新为total differences [ i ] \textit{total} \textit{differences}[i]totaldifferences[i]。遍历结束之后的total \textit{total}total即为每个城市都有n nn人抵达的最低费用。代码classSolution{publicinttwoCitySchedCost(int[][]costs){inttotal0;intlengthcosts.length;intnlength/2;int[]differencesnewint[length];for(inti0;ilength;i){totalcosts[i][0];differences[i]costs[i][1]-costs[i][0];}Arrays.sort(differences);for(inti0;in;i){totaldifferences[i];}returntotal;}}复杂度分析时间复杂度O ( n log n ) O(n \log n)O(nlogn)其中n nn是数组costs \textit{costs}costs的长度的一半。数组costs \textit{costs}costs的长度是2 n 2n2n计算数组differences \textit{differences}differences需要O ( 2 n ) O ( n ) O(2n) O(n)O(2n)O(n)的时间将数组differences \textit{differences}differences排序需要O ( 2 n log ( 2 n ) ) O ( n log n ) O(2n \log (2n)) O(n \log n)O(2nlog(2n))O(nlogn)的时间排序之后遍历数组differences \textit{differences}differences的前n nn个元素需要O ( n ) O(n)O(n)的时间因此时间复杂度是O ( n log n ) O(n \log n)O(nlogn)。空间复杂度O ( n ) O(n)O(n)其中n nn是数组costs \textit{costs}costs的长度的一半。创建数组differences \textit{differences}differences需要O ( 2 n ) O ( n ) O(2n) O(n)O(2n)O(n)的空间将数组differences \textit{differences}differences排序需要O ( log ( 2 n ) ) O ( log n ) O(\log (2n)) O(\log n)O(log(2n))O(logn)的递归调用栈空间因此空间复杂度是O ( n ) O(n)O(n)。
企业数字化 ERP 产品动态
相关推荐
VS Code四层缩进体系:从4个空格到工程化契约 1. 项目概述:为什么“4个空格”不是随便选的,而是工程师每天要面对的真实战场在写 Python 的时候,你有没有被一行缩进错误卡住半小时?在和同事联调 JavaScript 时,是不是总有人的代码里混着 Tab 和空格,Git… · 2026/9/26 1:59:24
用Seedance2-Skill制作卡点AI MV:多图音乐节奏同步提示词完整教程 用Seedance2-Skill制作卡点AI MV:多图音乐节奏同步提示词完整教程 【免费下载链接】seedance2-skill skill to create best prompts for generating videos with seedance2.0 项目地址: https://gitcode.com/gh_mirrors/se/seedance2-skill
Seedance2-Skill … · 2026/9/26 1:59:18
MindsDB 与 MCP 协议:用 TaoToken 统一 Key 打通 AI 应用数据链路 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 1:59:12
基于Spring AI服务,开发MCP服务:TaoToken统一Key接入与settings.json配置骨架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:58:45
VSCode 离线插件下载方式:用 TaoToken 统一 Key 打通 settings.json 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:58:45
DeepSeek V4 长期记忆与多模态升级前瞻:用 TaoToken 统一 Key 提前搭好接入骨架 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:58:45
OpenClaw 配 TaoToken:本地运行“小龙虾 AI”执行框架的 config.toml 骨架与验证 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:58:45
OpenClaw v2.7.9 虾壳云一键部署排错指南:TaoToken 配置文件骨架与启动报错逐项排查 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:58:45
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46