Kimi    LeetCode 3801. 合并有序列表的最小成本 Python3实现
以下是 LeetCode 3801. 合并有序列表的最小成本 的 Python3 实现方法签名为 def minMergeCost(self, lists: List[List[int]]) - int。核心思路- 关键观察任意子集合并后的有序列表其中位数只取决于该子集包含哪些原始列表与合并顺序无关。- Meet-in-the-Middle 状态压缩 DP1. 将 n ≤ 12 个列表平分为前后两半分别预处理所有子集合并后的有序数组。2. 对任意 mask利用「两个有序数组的中位数」算法LeetCode 4 变体在 O(log L) 内求出中位数。3. 子集 DPdp[mask] 表示将 mask 对应列表合并为一个的最小成本。枚举所有非空真子集转移。- 复杂度时间 O(2^n · L 3^n)空间 O(2^n L)其中 L ≤ 2000 为总长度。pythonfrom typing import Listclass Solution:def minMergeCost(self, lists: List[List[int]]) - int:n len(lists)def merge(a: List[int], b: List[int]) - List[int]:合并两个有序数组i j 0res []while i len(a) and j len(b):if a[i] b[j]:res.append(a[i])i 1else:res.append(b[j])j 1if i len(a):res.extend(a[i:])if j len(b):res.extend(b[j:])return resdef calc_sorted(sub_lists: List[List[int]]) - List[List[int]]:预计算 sub_lists 所有子集合并后的有序数组m len(sub_lists)u 1 msorted_arr [[] for _ in range(u)]for i in range(m):high_bit 1 ifor s in range(high_bit):sorted_arr[high_bit | s] merge(sub_lists[i], sorted_arr[s])return sorted_arrdef find_median_sorted_arrays(a: List[int], b: List[int]) - int:找两个有序数组合并后的下中位数。偶数长度时取左侧中间元素题目定义。if len(a) len(b):a, b b, am, n_len len(a), len(b)left, right 0, mwhile left right:mid (left right) // 2j (m n_len 1) // 2 - mid - 2if j 1 n_len and a[mid] b[j 1]:right midelse:left mid 1i left - 1j (m n_len 1) // 2 - i - 2if i 0:return b[j]if j 0:return a[i]return max(a[i], b[j])# 1. 分治预处理前后两半的所有子集合并结果m n // 2sorted1 calc_sorted(lists[:m])sorted2 calc_sorted(lists[m:])u 1 nhalf (1 m) - 1# 2. 预计算每个 mask 的中位数和总长度median [0] * ufor mask in range(1, u):median[mask] find_median_sorted_arrays(sorted1[mask half],sorted2[mask m])# 3. 子集 DPINF float(inf)dp [0] * ufor mask in range(u):if mask (mask - 1) 0: # 0 或单个列表无需合并continuedp[mask] INFsub (mask - 1) mask# 只枚举 sub other 避免重复计算对称性while sub (mask ^ sub):other mask ^ subdp[mask] min(dp[mask],dp[sub] dp[other] abs(median[sub] - median[other]))sub (sub - 1) mask# 加上当前合并的长度成本len(sub) len(other) len(mask)dp[mask] len(sorted1[mask half]) len(sorted2[mask m])return dp[u - 1]验证结果输入 期望 实际[[1,3,5],[2,4],[6,7,8]] 18 18[[1,1,5],[1,4,7,8]] 10 10[[1],[3]] 4 4[[1],[1]] 2 2

相关新闻

MapStruct深度解析:Java对象映射的高性能编译时解决方案与工程实践

MapStruct深度解析:Java对象映射的高性能编译时解决方案与工程实践

1. 项目概述:为什么MapStruct是Java对象映射的“瑞士军刀” 在Java后端开发里,对象之间的属性拷贝,也就是我们常说的“对象映射”,是一个高频到几乎无法回避的操作。从Controller层的DTO到Service层的BO,再到DAO层的En…

2026/10/10 7:26:44 阅读更多 →
微软CTO神操作:让画图软件以35帧每秒“玩”《毁灭战士》!

微软CTO神操作:让画图软件以35帧每秒“玩”《毁灭战士》!

【导语:过去几年画图应用已有多项实用升级,而微软Azure首席技术官马克拉希诺维奇找到了让画图软件“玩”《毁灭战士》的办法,虽非真正运行游戏,但能以每秒35帧流畅加载渲染画面。】画图软件的新奇玩法在画图应用不断升级的背景下&…

2026/10/4 2:06:01 阅读更多 →
浪潮服务器CentOS 7安装全攻略:从RAID配置到系统部署

浪潮服务器CentOS 7安装全攻略:从RAID配置到系统部署

1. 浪潮服务器上安装CentOS 7:从硬件到系统的完整旅程如果你刚拿到一台崭新的浪潮服务器,看着机箱上闪烁的指示灯和前面板密密麻麻的接口,第一反应可能是兴奋,紧接着可能就是一丝迷茫:这台性能强大的“铁疙瘩”&#x…

2026/10/15 13:53:21 阅读更多 →

最新新闻

数据中台全生命周期建设:从数据孤岛到数据服务化

数据中台全生命周期建设:从数据孤岛到数据服务化

这几年“数字化转型”几乎成了每一家企业战略PPT上的标配词,可真到落地的时候,很多人会发现最卡脖子的不是业务不配合,不是领导不支持,而是数据根本没法用。我参与过不少这类项目,几乎每一个都会在某个阶段被数据问题反…

2026/10/15 23:02:27 阅读更多 →
CEEMDAN算法详解:原理、Python实现与信号分解实战指南

CEEMDAN算法详解:原理、Python实现与信号分解实战指南

做信号处理的人,大概率都逃不过被 EMD 家族折腾几轮的命运。我第一次用 CEEMDAN 是在处理一组滚动轴承振动数据的时候,当时拿 EEMD 跑了一整晚都没出结果,换成 CEEMDAN 之后不仅时间缩短了一大截,分解出来的模态还更干净。这个方法…

2026/10/15 23:02:27 阅读更多 →
性能优化ROI评估模型在测试领域的深度应用

性能优化ROI评估模型在测试领域的深度应用

性能优化做了不少,但收益说不清楚,一直是测试这边最头疼的事。之前在某电商平台做压测,接口从1200ms压到450ms,研发觉得成果很漂亮,产品却问了一句“这块优化到底给业务带来多少钱”,大家当场卡壳。后面复盘…

2026/10/15 23:02:27 阅读更多 →
双点双向路由引入实战:防环、度量转换与OSPF+BGP避坑指南

双点双向路由引入实战:防环、度量转换与OSPF+BGP避坑指南

1. 这个“双点双向路由引入”到底在解决什么现实问题?刚接触这个词时,我也以为是教科书里一个抽象概念——直到在某高校网络实验室参与模拟项目X的骨干网改造时,才真正被它“按在地上摩擦”了一整周。当时的需求很朴素:把新部署的…

2026/10/15 23:02:27 阅读更多 →
海量产线数据实时可视化:LightningChart选型与性能优化实战

海量产线数据实时可视化:LightningChart选型与性能优化实战

电子制造业的朋友应该都有过这种经历:车间里几十台设备同时跑着,贴片机的抛料率、回流焊炉温曲线、AOI检测的直通率、洁净室的微粒子数,每秒钟都在产生新的数据点。以前我给产线做过一版监控看板,用常用的开源图表控件画实时曲线&…

2026/10/15 23:02:27 阅读更多 →
电力行业国产化ERP成本管理方案:从核算到管控的落地实践

电力行业国产化ERP成本管理方案:从核算到管控的落地实践

电力行业的ERP建设,一直是个“看着标准化、落地极复杂”的领域。特别是成本管理模块,发、输、配、售四个环节的业务逻辑差异巨大,资产密集程度在全部工业门类里都排在最前列,加上电价监管对成本分摊的精细化要求,传统通…

2026/10/15 23:01:26 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式: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/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →