贪心算法实现最小数字序列生成
1. 问题背景与核心需求这道题目来自信息学奥赛经典教材《信息学奥赛一本通》的第1321题属于贪心算法类问题的典型代表。题目要求在一个给定的数字序列中删除指定数量的数字使得剩下的数字组成的新数最小。比如给定数字175438要求删除3个数字最优解是删除7、5、4得到138。这类问题在实际中有广泛的应用场景金融领域的票据号码优化工业生产中的序列号压缩数据处理时的关键特征提取2. 算法设计思路解析2.1 贪心算法选择依据采用贪心算法是因为这个问题具有最优子结构性质局部最优解能导致全局最优解无后效性当前选择不影响后续选择具体来说要确保最终数字最小应该让高位的数字尽可能小。这就决定了我们需要从左到右遍历在允许删除的范围内尽可能删除较大的数字。2.2 关键数据结构选择使用栈Stack是最优选择原因如下需要频繁比较当前元素与栈顶元素需要支持快速回溯pop操作时间复杂度可以优化到O(n)相比数组实现栈的空间局部性更好操作更高效。3. 详细实现步骤3.1 算法流程分解初始化空栈和删除计数器遍历数字字符串当栈非空且当前数字栈顶数字且还有删除额度时弹出栈顶元素删除计数1将当前数字压入栈处理剩余删除额度从末尾删除去除前导零输出结果3.2 边界条件处理需要特别注意的特殊情况全零输入要求删除所有数字存在连续相同数字删除后结果为空4. 代码实现与注释def removeKDigits(num, k): stack [] remain len(num) - k for digit in num: while k and stack and stack[-1] digit: stack.pop() k - 1 stack.append(digit) # 处理剩余需要删除的情况 result stack[:remain] # 去除前导零 return .join(result).lstrip(0) or 0关键点说明remain计算确保最终保留正确数量的数字lstrip(0)处理前导零or 0确保空结果返回05. 复杂度分析与优化5.1 时间复杂度最优情况O(n) 最坏情况O(n) 平均情况O(n)每个数字最多入栈、出栈一次因此是线性复杂度。5.2 空间复杂度O(n) 用于存储栈可以优化到O(1)如果直接在原字符串上操作但会牺牲可读性。6. 常见错误与调试技巧6.1 典型错误类型未处理前导零删除数量计算错误边界条件遗漏贪心策略实现不完整6.2 调试方法建议测试用例10200 删除1 → 20012345 删除3 → 1210001 删除4 → 011111 删除2 → 1117. 算法扩展与变种7.1 相关变种问题求删除后的最大数带权重的删数问题限制删除位置的变种多次查询的在线处理7.2 实际应用优化在真实场景中可能需要考虑超大数处理分块算法流式数据处理分布式实现8. 竞赛技巧与注意事项先写暴力解法验证思路注意输入输出格式要求预留足够时间处理边界条件使用自定义测试用例验证在竞赛中遇到类似题目时建议先花2-3分钟在草稿纸上模拟小例子确保完全理解题意和算法逻辑后再开始编码。

相关新闻

Flutter插件鸿蒙化实战:anilibria跨平台适配经验

Flutter插件鸿蒙化实战:anilibria跨平台适配经验

1. 项目背景与核心价值 作为一名长期深耕跨平台开发领域的工程师,最近在将Flutter生态中的anilibria库适配到鸿蒙平台时积累了不少实战经验。anilibria作为动漫番剧领域的知名开源库,其鸿蒙化改造对于构建多媒体分发生态具有特殊意义。 鸿蒙系统的分布式…

2026/10/14 12:34:39 阅读更多 →
VS Code调试Fabric 1.4源码:零侵入单机调试实战指南

VS Code调试Fabric 1.4源码:零侵入单机调试实战指南

1. 项目概述:为什么要在VS Code里调试Fabric 1.4源码Fabric 1.4是Hyperledger生态中一个承前启后的关键版本——它既保留了经典的PBFT共识模型和完整的链码生命周期管理,又为后续2.x的模块化架构埋下了伏笔。但恰恰因为它的“过渡性”,官方文…

2026/10/14 12:34:39 阅读更多 →
贪心算法解决删数问题:原理与Python实现

贪心算法解决删数问题:原理与Python实现

1. 问题背景与需求分析1321删数问题是一个经典的贪心算法练习题,主要考察选手对数字特性和贪心策略的理解。题目通常给出一个由数字组成的字符串和一个正整数k,要求从中删除k个数字后,使剩下的数字组成的新数最小。这个问题在实际中有很多应用…

2026/10/14 12:34:39 阅读更多 →

最新新闻

STM32F103储能逆变器硬件-固件协同设计实战

STM32F103储能逆变器硬件-固件协同设计实战

简介:本资源是一套基于STM32F103微控制器开发的5kW储能逆变器完整工程资料,面向嵌入式电力电子方向的工程师、高校电力系统/自动化专业学生及硬件开发者,解决中小型储能系统中并网充放电控制、离网无缝切换与多重安全保护等核心实现问题。压缩…

2026/10/14 14:59:33 阅读更多 →
EAV模式实战指南:动态属性数据库设计与优化

EAV模式实战指南:动态属性数据库设计与优化

1. 什么是EAV模式:当数据库遇到“千变万化的属性”时的务实解法你有没有遇到过这样的场景:某电商平台突然要上线一批智能硬件,每款设备都有完全不同的技术参数——有的强调电池续航(单位:小时),…

2026/10/14 14:59:33 阅读更多 →
滚刀状态识别:多模态时序建模与边缘部署实战

滚刀状态识别:多模态时序建模与边缘部署实战

简介:本资源是一套面向本科生毕业设计、课程设计与期末大作业的滚刀状态智能识别实战项目,聚焦工业设备健康监测场景,融合深度学习与传统机器学习方法解决刀具磨损、异常振动等状态分类问题。项目完整实现CNN、LSTM、GRU时序建模及SVM、随机森…

2026/10/14 14:59:33 阅读更多 →
语义分割各类别mIoU计算:从混淆矩阵到逐类IoU的工程实践

语义分割各类别mIoU计算:从混淆矩阵到逐类IoU的工程实践

简介:这份资源聚焦语义分割任务中的精度评估环节,面向正在使用 PyTorch 训练分割模型、需要量化各类别表现的学生与算法工程师。它解决的是「模型整体指标尚可、却难以定位具体类别分割效果」的问题,通过脚本演示如何从预测结果出发逐类计算 …

2026/10/14 14:59:33 阅读更多 →
SSL证书安全风险:中间人攻击与证书劫持防护

SSL证书安全风险:中间人攻击与证书劫持防护

一、什么是SSL中间人攻击(MITM)HTTPS依靠TLS加密证书身份校验来保护通信,但攻击者一旦插入客户端与服务端之间,就可以做双向TLS会话:一边和浏览器建立TLS连接、出示伪造证书;另一边和真实服务器建立TLS连接…

2026/10/14 14:59:33 阅读更多 →
血管分析套件2019血流速度计算原理与工程实践

血管分析套件2019血流速度计算原理与工程实践

简介:本资源是面向生物医学图像分析领域科研人员与临床工程师的MATLAB血流动力学计算工具包,聚焦于纸基血管图像中血流速度的定量评估,适用于糖尿病视网膜病变、高血压血管监测等疾病研究场景。压缩包共136个文件,含89个核心MATLA…

2026/10/14 14:58:32 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →