news 2026/9/2 11:12:28

用贪心算法解决仅含 6 和 9 数字的最大翻转值问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用贪心算法解决仅含 6 和 9 数字的最大翻转值问题

一,创作灵感

作为一名在校大学生,平时的算法学习中总觉得抽象的算法概念很难落地,直到遇到这个仅由 6 和 9 组成的数字翻转问题。起初我还在纠结要不要枚举所有翻转情况再找最大值,但转念一想,枚举的方式不仅麻烦,效率也不高。后来联想到课堂上学过的贪心算法 —— 每一步都选当下最优解,这不正好契合 “让数字最大” 的核心需求吗?想着把这个解题思路梳理清楚,既巩固课堂上学到的贪心算法知识,也能记录自己从 “无思路” 到 “找方法” 再到 “写代码” 的完整过程,给同样在算法学习中摸索的同学提供一点参考,于是就有了这篇学习笔记。

二、问题场景与需求

在算法作业和刷题过程中,遇到了这样一个有趣的题目:给定一个仅由数字 6 和 9 组成的正整数num,最多只能翻转一位数字(6 变 9 或者 9 变 6),需要找出通过这个操作能得到的最大数字。比如输入9669,要通过合理翻转得到最大的9969。这个问题看似简单,但需要找到最关键的翻转位置,才能高效得到最优解。

三、解题思路 —— 贪心算法

(一)算法选择依据

作为学生,刚开始接触这类问题时,第一反应是 “把所有可能的翻转结果列出来,再找最大值”,但很快发现这种枚举法对于位数多的数字来说效率太低。回忆课堂上老师讲的贪心算法,其核心是 “每一步都做局部最优选择,最终达到全局最优”。对于数字来说,高位的数值变化对整体大小影响远大于低位,所以只要从高位到低位找到第一个能让数字变大的机会(把 6 换成 9),就能得到最大值,这正是贪心算法的典型应用场景。

(二)具体实现步骤
  1. 类型转换:利用 C++ 中的to_string函数把整数num转换成字符串s。因为字符串可以像数组一样通过索引访问每一位字符,相比直接操作整数的每一位(需要取模、除法),这种方式更直观,也符合我们学生日常处理字符类问题的习惯。例如num = 9669,转换后s = "9669"
  2. 遍历替换:从字符串的第 0 位(最高位)开始遍历,一旦遇到字符'6',就把它替换成'9',然后立即用break跳出循环。这是因为只需要翻转一位,且高位的 6 变成 9 能让数值增大最多,找到第一个就完成了最优翻转,无需继续遍历。比如遍历"9669"时,第二位(索引 1)是'6',替换后变为"9969"
  3. 结果还原:用stoi函数把修改后的字符串转回整数,得到最终结果。比如"9969"转换后就是整数9969

四,代码实现(C++)

class Solution { public: int maximum69Number (int num) { string s = to_string(num); // 整数转字符串,方便按位处理 for (int i = 0; i < s.size(); ++i) { // 从高位到低位遍历每一位 if (s[i] == '6') { // 找到第一个能增大数值的6 s[i] = '9'; // 替换为9,实现局部最优 break; // 仅翻转一位,完成后退出循环 } } return stoi(s); // 字符串转回整数返回 } };

五,代码解析

  • to_string函数:作为学生,在处理数字逐位操作时,最容易想到的就是把数字转成字符串,这个函数能快速实现整数到字符串的转换,避免了手动通过取模(%)和除法(/)拆分数字的繁琐,降低了代码的复杂度。
  • 循环遍历逻辑:循环从索引 0 开始,保证优先处理高位,这是贪心算法 “局部最优” 的核心体现。找到第一个'6'就替换并跳出循环,时间复杂度为O(n)n为数字的位数),在学生刷题的场景中,这种线性时间复杂度的解法能高效通过所有测试用例。
  • stoi函数:将修改后的字符串转回整数,满足题目返回整数的要求,完成从 “字符操作” 到 “数值结果” 的闭环,是 C++ 中处理字符串与整数转换的常用方法,也是我们日常编程需要掌握的基础知识点。
  • 六,总结:算法思维,赋能职场认知
  • 从 “数字翻转” 到职场实践,贪心算法的核心逻辑,能帮我们更清晰地做决策、推进工作。但要注意:职场比算法题复杂,需结合业务本质动态调整,既要学会像找 “6” 一样抓核心,也要避免陷入 “局部最优” 忽略全局。

    把算法思维迁移到职场,不是生搬硬套代码逻辑,而是借鉴其 “简化问题、抓住本质” 的思路。愿我们都能在职场的 “数字串” 里,精准找到该翻转的 “6”,用高效决策和聚焦行动,拿到属于自己的 “最大结果”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:23:35

C语言实现扫雷游戏基础

一、扫雷游戏分析和设计1.1 扫雷游戏的功能说明1. 运行载体&#xff1a;使用控制台实现经典扫雷游戏。2. 游戏流程&#xff1a;通过菜单选择继续玩游戏或退出游戏。3. 棋盘规格&#xff1a;9*9的格子棋盘。4. 雷的设置&#xff1a;默认随机布置10个雷。5. 排雷规则&#xff1a;…

作者头像 李华
网站建设 2026/9/2 22:09:34

谷歌浏览器插件辅助调试Qwen-Image-Edit-2509 API请求

谷歌浏览器插件辅助调试 Qwen-Image-Edit-2509 API 请求 在电商运营、社交媒体内容批量生成等高频视觉更新场景中&#xff0c;AI驱动的图像编辑正迅速从“锦上添花”变为“刚需”。传统依赖Photoshop或Canva的操作流程已难以应对每日成百上千张素材的修改需求——比如更换背景、…

作者头像 李华
网站建设 2026/9/2 3:34:55

从零开始训练?其实你只需要微调Qwen-Image-Edit-2509即可

从零开始训练&#xff1f;其实你只需要微调 Qwen-Image-Edit-2509 即可 在电商运营的深夜&#xff0c;设计师正为上百张商品图逐一替换促销标签而焦头烂额&#xff1b;社交媒体团队为了测试五种不同的海报风格&#xff0c;连续三天通宵改图&#xff1b;跨国品牌每次上线新市场&…

作者头像 李华
网站建设 2026/8/31 17:01:11

如何在Ollama中部署Qwen3-14B模型?详细步骤说明

如何在 Ollama 中部署 Qwen3-14B 模型&#xff1f;完整实践指南 在企业对数据隐私和响应效率要求日益提升的今天&#xff0c;将大语言模型&#xff08;LLM&#xff09;本地化部署已不再是“可选项”&#xff0c;而是许多业务场景下的“必选项”。尤其是在金融、法律、医疗等敏感…

作者头像 李华
网站建设 2026/9/2 21:39:20

大语言模型推理极致优化:TensorRT-LLM高性能推理实践指南

大语言模型推理极致优化&#xff1a;TensorRT-LLM技术详解与云上实践指南&#xff0c;系统性地介绍了如何使用 TensorRT-LLM 优化大语言模型推理性能。 一、背景与挑战 大语言模型&#xff08;LLM&#xff09; 是基于海量数据预训练的超大规模深度学习模型&#xff0c;其基础是…

作者头像 李华
网站建设 2026/9/2 0:30:03

C#实现HC32L130 CRC16校验

要在 C# 中实现与小华 HC32L130 MCU 匹配的 CRC16 校验&#xff0c;需先明确HC32L130 的 CRC16 参数规则&#xff0c;再基于该规则编写 C# 代码。一、HC32L130 的 CRC16 参数解析从你提供的文档和 MCU 代码可提取核心参数&#xff1a;参数项具体值 / 规则多项式\(x^{16}x^{12}x…

作者头像 李华