Kimi LeetCode 3510. 移除最小数对使数组有序 II Python3实现
📅 2026/7/8 0:28:14
👁️ 次浏览
以下是 LeetCode 3510. Minimum Pair Removal to Sort Array II 的 Python3 实现。解题思路这道题要求将时间复杂度从 O(n²) 优化到 O(n log n)核心思路是1. 最小相邻对查找使用 最小堆 (heapq) 维护所有相邻元素对的和支持 O(log n) 的插入和弹出最小值。2. 有序性判断不每次扫描整个数组而是维护一个 num_descending 计数器记录当前有多少对相邻元素是递减的即 nums[i] nums[i1]。当计数器为 0 时数组即为非递减序列。3. 双向链表使用 Node 类模拟双向链表实现 O(1) 的节点删除操作。合并两个节点时只需修改指针无需实际移动数组元素。4. 惰性删除堆中可能包含过期的相邻对信息因为某些节点已被合并弹出时检查 node.value node.next.value value不匹配则跳过。Python3 代码pythonimport heapqfrom typing import Listclass Node:def __init__(self, value: int, i: int):self.value value # 当前节点的值self.i i # 原始下标用于打破平局选最左边的对self.prev None # 前一个节点self.next None # 后一个节点self.descending False # 当前节点值 下一个节点值def remove(self):从双向链表中移除当前节点if self.prev:self.prev.next self.nextif self.next:self.next.prev self.prevself.next self.prev Noneclass Solution:def minimumPairRemoval(self, nums: List[int]) - int:n len(nums)if n 1:return 0# 初始化双向链表从右往左构建tail Node(nums[-1], n - 1)for i in range(n - 2, -1, -1):head Node(nums[i], i)head.next tailtail.prev headtail head# 初始化最小堆存储 (相邻对和, 左端点原始下标, 左端点节点引用)heap []num_descending 0cur tailwhile cur and cur.next:heap.append((cur.value cur.next.value, cur.i, cur))cur.descending cur.value cur.next.valueif cur.descending:num_descending 1cur cur.nextif num_descending 0:return 0heapq.heapify(heap)num_operations 0while num_descending 0:value, _, node heapq.heappop(heap)# 惰性删除检查这对是否仍然有效# 如果 node 已被合并没有 next或者和已改变则跳过if not node.next or node.value node.next.value ! value:continue# 合并 node 和 node.next# 1. 处理 node.next 的 descending 标记if node.next.descending:num_descending - 1# 2. 移除 node.next 节点node.next.remove()# 3. 更新 node 的值为两数之和node.value valuenum_operations 1# 4. 更新与 node 相关的相邻对前一个和当前节点for pair in (node.prev, node):if not pair:continuedescending Falseif pair.next:# 将新的相邻对和推入堆heapq.heappush(heap, (pair.value pair.next.value, pair.i, pair))descending pair.value pair.next.value# 更新 descending 计数num_descending descending - pair.descendingpair.descending descendingreturn num_operations复杂度分析- 时间复杂度O(n log n)。每次堆操作 O(log n)每个节点最多被合并一次每个相邻对最多被推入堆两次。- 空间复杂度O(n)。用于存储链表节点和堆。
1. EM3080-W条形码扫描模块深度解析EM3080-W是一款专为工业环境设计的激光条形码扫描模块,其核心优势在于卓越的环境适应性和解码稳定性。这个拇指大小的器件内部集成了650nm红色激光二极管、精密光学透镜组和高灵敏度光电转换电路,能够在0-300mm范围内快…
📅 2026/7/8 0:28:14
1. A3908电机驱动器核心特性解析A3908是Allegro MicroSystems推出的一款专为精密运动控制设计的低压恒压直流电机驱动器。这款芯片的独特之处在于其全桥式输出架构与源端线性操作技术的结合,能够在3V至5.5V的宽输入电压范围内提供高达500mA的持续输出电流。在实际项…
📅 2026/7/8 0:28:14
终极指南:在Linux系统上免费运行Photoshop CC 2022的完整解决方案 🎨 【免费下载链接】Photoshop-CC2022-Linux Installer from Photoshop CC 2021 to 2022 on linux with a GUI 项目地址: https://gitcode.com/gh_mirrors/ph/Photoshop-CC2022-Linux …
📅 2026/7/8 0:26:14
15个实用的Markdown编辑器,写作体验
# 15款高效实用的Markdown编辑器推荐:提升你的写作体验
Markdown作为一种轻量级标记语言,已经成为程序员、作家和博主们的首选写作工具。选择一个优秀的Markdown编辑器能极大提升写作效率和体验。
## 最适…
📅 2026/7/8 1:30:28
15个实用的代码审查工具,自动化检查
**15个实用的代码审查工具,自动化检查**
在软件开发过程中,代码质量直接影响系统的稳定性与可维护性。为了提高代码质量、减少潜在错误,越来越多的开发者开始依赖代码审查工具。这些工具不仅可…
📅 2026/7/8 1:30:28
15个实用的JSON工具,格式化与验证
# 15个实用的JSON工具:轻松格式化与验证你的数据
在Web开发和数据处理中,JSON已经成为事实上的标准格式。无论是前端与后端的数据交互,还是配置文件存储,JSON都扮演着重要角色。但随着…
📅 2026/7/8 1:30:28
简直了,让自己完全没时间摸鱼 我愿称作高级牛马的自我修养——自己做皮鞭 踩坑都是我自己遇到的,如果你没有遇到或者与i到别的可以飞书填写表单。 可以帮你安装Hooks,爱发电购买玉米粒(6.6R)就可以! 这篇文章记录一次从 0 到 1 搭…
📅 2026/7/8 1:30:28
印刷品色差与套印精度实测:基于四色文件与海德堡设备的对照分析印刷品质量差异的核心在哪里印刷品质量好不好,最终体现在色彩还原度、套印精度、交货时效和售后服务四个维度上。通过统一测试条件和实测数据对比,能清晰看到不同服务商的真实差…
📅 2026/7/8 1:30:28
上节课我们学习了三层洋葱重试,通过该技术,能够解决出错,报错重试的问题,今天我们来学习Lane并发调度系统,使用多队列独立并发控制替代全局锁,实现对话,心跳,定时任务的解耦和并行。…
📅 2026/7/8 1:28:28
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/7 12:08:23
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/7 9:08:28
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/7 6:33:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/7 9:08:31
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/7 9:08:30
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/7 4:32:18