Kimi LeetCode 3505. 使 K 个子数组内元素相等的最少操作数 Python3实现
📅 2026/7/8 15:45:30
👁️ 次浏览
以下是 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步解锁平板模式,工作生活两不误 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad
你是否也曾为微信的单设备限制而烦恼?正在手机处理工作消息时&…
📅 2026/7/8 15:45:30
微信双设备登录终极方案:3步解锁平板模式,告别单设备限制 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad
还在为微信只能在一台设备上登录而烦恼吗?当你在手机上处理工作消…
📅 2026/7/8 15:45:30
微信双设备登录终极指南:3分钟解锁平板模式,工作生活完美分离 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad
你是否厌倦了在手机和平板之间频繁切换微信账号?是否因为微信…
📅 2026/7/8 15:45:30
3步轻松安装Zotero SciHub插件:一键获取学术文献的完整实用指南 【免费下载链接】zotero-scihub A plugin that will automatically download PDFs of zotero items from sci-hub 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scihub
Zotero SciHub插…
📅 2026/7/8 16:54:26
本文还有配套的精品资源,点击获取
简介:直接上手FPGA的Verilog FIR低通滤波器实现,核心模块FIR.v支持灵活配置抽头数量和系数位宽;配套MATLAB脚本coeff.m自动生成定点系数文件(coeff.txt和coeff.coe)&am…
📅 2026/7/8 16:54:26
1. 项目概述:为什么FBX导出是Unity工作流的关键一环在Unity项目开发中,尤其是涉及到外部3D内容协作时,FBX格式的导入导出几乎是每个开发者都会遇到的环节。但很多朋友,包括我自己在早期,都曾在这个看似简单的步骤上栽过…
📅 2026/7/8 16:54:26
1. 项目概述与核心价值 如果你曾经因为误删了Godot项目的 .godot 目录,或者手头只有一个打包好的PCK、APK甚至是一个独立的EXE文件,而无法打开或修改一个心仪的游戏项目,那种感觉一定很糟糕。作为一个在游戏开发和逆向分析领域摸爬滚打了十…
📅 2026/7/8 16:54:26
1. 项目概述:为什么在CPU上跑llama.cpp还要死磕多线程?“llama.cpp笔记之cpu后端多线程”——这标题里没一个生僻词,但组合在一起,就是当前轻量化大模型落地最硬核、也最容易被低估的实战战场。我从2023年llama.cpp刚火起来就全程…
📅 2026/7/8 16:54:26
1. 项目概述:为什么从2D入门Unity是明智之选如果你对游戏开发感兴趣,Unity几乎是一个绕不开的名字。但很多新手一上来就被它庞大的3D世界编辑器、复杂的物理系统和渲染管线给吓退了。我见过太多人,雄心勃勃地打开Unity,想做个“旷…
📅 2026/7/8 16:52:26
Docker 彻底卸载指南:CentOS/Ubuntu 双系统 5 步清理残留文件当 Docker 环境出现版本冲突、安装失败或需要迁移时,常规的卸载命令往往无法彻底清理系统。残留的配置文件、依赖项和缓存文件可能导致新安装的 Docker 出现各种诡异问题。本文将提供一套完整…
📅 2026/7/8 0:00:10
SQL 数据分析性能优化实战:窗口函数 vs 子查询 vs 临时表 在数据分析工作中,SQL查询性能往往是决定工作效率的关键因素。面对复杂的业务场景,如何选择最优的查询方案?本文将深入对比窗口函数、子查询和临时表三种技术方案…
📅 2026/7/8 0:00:10
日期:2026-07-07> 本期聚焦近一日(2026-07-06 至 07-07)出台的金融与行业政策,按"背景—核心—影响—受益/风险"四维度解读。政策内容依据原始发布信息整理,解读仅供参考,不构成投资建议。一、…
📅 2026/7/8 0:00:10
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/8 14:10:54
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/8 14:10:54
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/8 11:28:59
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/8 14:10:54
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/8 14:10:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/8 14:10:54