Kimi    LeetCode 3505. 使 K 个子数组内元素相等的最少操作数 Python3实现
以下是 LeetCode 3505. 使 K 个子数组内元素相等的最少操作数的 Python3 实现---思路概述本题是 LeetCode 462最小操作次数使数组元素相等 II和 LeetCode 480滑动窗口中位数的结合题。核心思路1. 中位数贪心对于一个子数组要使其所有元素相等且操作次数最少最终值应取子数组的中位数。证明可参考 LeetCode 462。2. 滑动窗口中位数用对顶堆两个堆 延迟删除维护长度为 x 的滑动窗口快速求出每个窗口变为相等的最小操作次数 cost[i]。3. 划分型 DPdp[i][j] 表示前 i 个元素中选出 j 个不重叠的长度为 x 的子数组的最小操作数。- 不选dp[i][j] dp[i-1][j]- 选以 i-1 结尾的子数组dp[i][j] dp[i-x][j-1] cost[i-1]---完整 Python3 代码pythonfrom typing import Listimport heapqclass Solution:def minOperations(self, nums: List[int], x: int, k: int) - int:n len(nums)INF 10**18# Step 1: Preprocess cost[i]# cost[i] min operations to make subarray nums[i-x1..i] all equal# Use dual heap with lazy deletion to maintain sliding window mediancost [INF] * n# Two heaps: small (max-heap for smaller half), large (min-heap for larger half)small [] # max-heap, store negativeslarge [] # min-heapdelayed {} # lazy deletion dictsmall_size 0large_size 0small_sum 0large_sum 0small_target x // 2large_target x - small_targetdef prune(heap):while heap:num -heap[0] if heap is small else heap[0]if delayed.get(num, 0) 0:delayed[num] - 1if delayed[num] 0:del delayed[num]heapq.heappop(heap)else:breakdef make_balance():nonlocal small_size, large_size, small_sum, large_sumif small_size small_target:num -heapq.heappop(small)small_sum - numsmall_size - 1heapq.heappush(large, num)large_sum numlarge_size 1prune(small)elif large_size large_target:num heapq.heappop(large)large_sum - numlarge_size - 1heapq.heappush(small, -num)small_sum numsmall_size 1prune(large)def insert(num):nonlocal small_size, large_size, small_sum, large_sumif not small or num -small[0]:heapq.heappush(small, -num)small_sum numsmall_size 1else:heapq.heappush(large, num)large_sum numlarge_size 1make_balance()def erase(num):nonlocal small_size, large_size, small_sum, large_sumdelayed[num] delayed.get(num, 0) 1if small and num -small[0]:small_size - 1small_sum - numif num -small[0]:prune(small)else:large_size - 1large_sum - numif large and num large[0]:prune(large)make_balance()def get_median():return large[0]def get_cost():median get_median()cost_small median * small_size - small_sumcost_large large_sum - median * large_sizereturn cost_small cost_large# Initialize first windowfor i in range(x):insert(nums[i])cost[x - 1] get_cost()# Sliding windowfor i in range(x, n):insert(nums[i])erase(nums[i - x])cost[i] get_cost()# Step 2: Dynamic Programming# dp[i][j] min operations to select j non-overlapping subarrays from first i elementsdp [[INF] * (k 1) for _ in range(n 1)]dp[0][0] 0for i in range(1, n 1):for j in range(k 1):dp[i][j] dp[i - 1][j]if i x and j 1 and cost[i - 1] INF:dp[i][j] min(dp[i][j], dp[i - x][j - 1] cost[i - 1])return dp[n][k]---复杂度分析项目 复杂度时间 O(n log x · k) — 滑动窗口 O(n log x)DP O(nk)空间 O(n x nk) — cost 数组 O(n)对顶堆 O(x)DP 数组 O(nk)由于 k ≤ 15nk 最大约为 1.5 × 10⁶空间可接受。---下载链接[LeetCode3505.py](sandbox:///mnt/agents/output/LeetCode3505.py)

相关新闻

微信双设备登录终极指南:3步解锁平板模式,工作生活两不误

微信双设备登录终极指南:3步解锁平板模式,工作生活两不误

微信双设备登录终极指南:3步解锁平板模式,工作生活两不误 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 你是否也曾为微信的单设备限制而烦恼?正在手机处理工作消息时&…

2026/7/8 15:45:47阅读更多 →
微信双设备登录终极方案:3步解锁平板模式,告别单设备限制

微信双设备登录终极方案:3步解锁平板模式,告别单设备限制

微信双设备登录终极方案:3步解锁平板模式,告别单设备限制 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 还在为微信只能在一台设备上登录而烦恼吗?当你在手机上处理工作消…

2026/7/8 15:45:47阅读更多 →
微信双设备登录终极指南:3分钟解锁平板模式,工作生活完美分离

微信双设备登录终极指南:3分钟解锁平板模式,工作生活完美分离

微信双设备登录终极指南:3分钟解锁平板模式,工作生活完美分离 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 你是否厌倦了在手机和平板之间频繁切换微信账号?是否因为微信…

2026/7/8 15:45:47阅读更多 →
计算机毕业设计之篮球周边商城销售平台

计算机毕业设计之篮球周边商城销售平台

本毕业设计的内容是设计并且实现一个基于JSP的篮球周边商城销售平台。它是在Windows下,SSM为框架,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。篮球周边商城销售平台的功能已基本实现,主要包括用户、篮球赛事、商…

2026/7/8 16:56:20阅读更多 →
UE5蓝图实现虚拟监控室:角色与多摄像头无缝切换方案

UE5蓝图实现虚拟监控室:角色与多摄像头无缝切换方案

1. 项目概述:打造一个动态的虚拟监控室 最近在做一个模拟训练的项目,客户需要一个能让操作员在虚拟监控室里自由巡视,并能随时切换到任何一个固定摄像头视角观察现场情况的功能。这听起来不就是很多游戏里常见的“监控室”桥段吗?…

2026/7/8 16:56:20阅读更多 →
Unity项目3D模型优化实战:Polygon Cruncher与Simplygon自动化减面工作流

Unity项目3D模型优化实战:Polygon Cruncher与Simplygon自动化减面工作流

1. 项目概述:为什么你的Unity项目需要模型优化如果你正在用Unity开发游戏或者交互应用,尤其是面向移动端或者VR/AR平台,大概率遇到过这个场景:场景里模型一多,帧率就开始跳水,手机发烫,体验直线…

2026/7/8 16:56:20阅读更多 →
ELAN4D:面向具身智能的4D运动监督框架

ELAN4D:面向具身智能的4D运动监督框架

1. 项目概述:这不是又一个“加了4D前缀”的概念炒作,而是具身智能落地绕不开的物理世界校准器“ELAN4D:面向具身智能的4D运动监督框架”这个标题里,“ELAN”不是随便起的缩写,它源自“Embodied Learning with Adaptive…

2026/7/8 16:56:20阅读更多 →
深入解析Godot PCK文件解包技术:从二进制黑盒到可编辑资源

深入解析Godot PCK文件解包技术:从二进制黑盒到可编辑资源

1. 项目概述:为什么我们需要拆解Godot的PCK文件?如果你是一个Godot游戏开发者,或者是一个对游戏资源结构充满好奇的爱好者,你一定遇到过.pck文件。在Godot引擎中,PCK文件是项目资源打包后的最终产物,它就像…

2026/7/8 16:56:20阅读更多 →
Unity TextMeshPro中文缺字终极解决方案:静态字体生成全流程详解

Unity TextMeshPro中文缺字终极解决方案:静态字体生成全流程详解

1. 项目概述:为什么你的Unity游戏里中文总在“缺字”? 如果你正在用Unity开发面向中文市场的游戏或应用,并且已经用上了TextMeshPro(简称TMP)这个强大的文本渲染工具,那你大概率遇到过这个让人头疼的问题&a…

2026/7/8 16:51:18阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →