尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LeetCode-Go 题解 1736:替换隐藏数字得到的最晚时间(Latest Time by Replacing Hidden Digits)
LeetCode-Go 题解 1736替换隐藏数字得到的最晚时间Latest Time by Replacing Hidden Digits【免费下载链接】LeetCode-Go✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% | LeetCode 题解项目地址: https://gitcode.com/GitHub_Trending/le/LeetCode-Go导读本文围绕 LeetCode 第 1736 题「替换隐藏数字得到的最晚时间」展开结合本仓库leetcode/1736.Latest-Time-by-Replacing-Hidden-Digits/目录下的题解源码与单元测试从题目约束出发推导出每一位数字的贪心替换规则逐行剖析 Go 实现中容易踩坑的边界处理并通过表驱动测试用例验证正确性。读完本文你将掌握按位贪心 边界修正这类字符串还原类题目的完整分析方法以及在本仓库中运行单测与覆盖率统计的具体方式。题目描述给定一个形如hh:mm的字符串time其中部分数字被隐藏用?表示。有效时间是指介于00:00与23:59含端点之间的所有时间。请通过替换被隐藏的数字返回最晚的有效时间。示例 1输入time 2?:?0 输出23:50 解释以 2 开头的最晚小时是 23以 0 结尾的最晚分钟是 50。示例 2输入time 0?:3? 输出09:39示例 3输入time 1?:22 输出19:22约束条件time的格式为hh:mm保证从给定字符串一定能还原出一个有效时间。题目大意给你一个字符串time格式为hh:mm小时分钟其中某几位数字被隐藏用?表示。有效时间为00:00到23:59之间的所有时间含两端。替换time中隐藏的数字返回可以得到的最晚有效时间。解题思路按位置贪心替换这是一道简单题核心思路是枚举时间的 4 个数字位每一位都填上在当前约束下允许的最大值。由于分钟与小时相互独立只需分别处理第 3 个位置分钟十位分钟十位最大只能取5因此若为?直接填5第 4 个位置分钟个位个位最大为9因此若为?直接填9第 2 个位置小时个位单独看个位最大为9但受小时十位约束需要特判见下文第 1 个位置小时十位不能盲目填2必须参考第 2 个位置的取值若第 2 个位置是大于3的数字即4~9小时只能落在14:xx~19:xx十位最多取1若第 2 个位置是小于等于3的数字或同样是?小时可落在20:xx~23:xx十位最多取2。小时位的决策可归纳为下表小时十位位置 0小时个位位置 1可取值区间十位最终取值?4~914~191?0~3或?20~2322?20~232配合个位修正为3按照上述规则即可逐位还原出最晚时间。源码实现逐行解析本仓库的实现位于 题解源文件完整代码如下package leetcode func maximumTime(time string) string { timeb : []byte(time) if timeb[3] ? { timeb[3] 5 } if timeb[4] ? { timeb[4] 9 } if timeb[0] ? { if int(timeb[1]-0) 3 int(timeb[1]-0) 10 { timeb[0] 1 } else { timeb[0] 2 } } if timeb[1] ? { timeb[1] 9 } if timeb[0] 2 timeb[1] 9 { timeb[1] 3 } return string(timeb) }下面逐段拆解实现细节1. 字符串转字节切片支持就地修改timeb : []byte(time)Go 的string是不可变的无法直接对单个字符赋值因此先将字符串转换为[]byte实现就地修改最后再用string(timeb)转回字符串返回。输入长度为固定的 5 个字符hh:mm此转换代价可忽略。2. 分钟位无脑取最大if timeb[3] ? { timeb[3] 5 } if timeb[4] ? { timeb[4] 9 }分钟范围是00~59十位下标 3最大为5个位下标 4最大为9。由于分钟不存在任何跨位约束这里直接填最大合法值即可。若对应位置原本就是数字如2?:?0中的0则保持不动。3. 小时十位依赖个位取值做分支if timeb[0] ? { if int(timeb[1]-0) 3 int(timeb[1]-0) 10 { timeb[0] 1 } else { timeb[0] 2 } }小时范围是00~23十位能否取2完全取决于个位若个位是4~9即timeb[1]-0大于3且小于10此时小时形如1?14~19十位只能取1否则个位为0~3或个位本身还是?小时形如2?20~23十位取2。值得注意的细节当个位为?时? - 0的数值为 15虽然满足 3但不满足 10因此会落入else分支取2。代码通过 10这个条件天然排除了?字符不需要额外判断这是该实现的一个巧妙之处。4. 小时个位先填 9 再修正非法组合if timeb[1] ? { timeb[1] 9 } if timeb[0] 2 timeb[1] 9 { timeb[1] 3 }个位单独看最大是9先置为9但如果此时十位是229:xx显然是非法时间因此需要把个位修正为3得到最大合法组合23。这正是示例 1 中2?:?0→23:50的关键一步。5. 边界修正的安全性分析最后一个if看似是全局特判实际触发条件非常受限不会误伤其他组合若十位是给定数字1或0条件timeb[0] 2不成立个位保持9得到19/09合法若十位原本是?而个位是给定数字9则第 3 步会先把十位置为1因为9 3得到19也轮不到最后这个if触发若十位原本是?且个位也是?第 3 步将十位置为2第 4 步将个位置为9最后修正为3得到23恰好是全题最晚时间23:59的小时部分只有当十位确实为2给定或由?推导且个位为9时才会执行修正而十位给定2、个位给定9意味着原始小时为29在题目保证能还原出有效时间的约束下不会出现。综合来看四个位置的替换相互独立、逐层递进既保证了每一位取到局部最大又通过最后一步修正保证了小时整体的合法性。正确性验证表驱动单元测试本仓库为该题配套了完整的单元测试见 测试文件。测试采用仓库统一的question para ans表驱动结构para1736封装输入参数ans1736封装期望输出再以question1736组合二者批量遍历断言。测试共覆盖 6 组用例除了题目给出的 3 个示例外还额外覆盖了小时位分支的边界输入期望输出覆盖点2?:?023:50题目示例 1小时十位给定2配合个位修正0?:3?09:39题目示例 2小时十位给定01?:2219:22题目示例 3小时十位给定1个位取9?4:0014:00个位为4十位只能取1?3:0023:00个位为3十位可取2??:??23:59全部隐藏验证全局最晚时间其中?4:00与?3:00一左一右精准验证了第 3 步的分支边界个位为4取1、个位为3取2而??:??则验证了所有?的极限场景——结果必须是23:59。断言失败时测试会通过t.Fatalf(input %v: got %v, want %v, ...)立即终止并输出实际与期望的差异便于定位。复杂度分析时间复杂度对固定长度5 个字符的字符串做常数次判断与赋值为O(1)空间复杂度将字符串转换为[]byte产生与原字符串等长的字节切片为O(n)此处n 5即输入长度。若严格要求原地处理也可改用索引下标逐字符比较但本题输入规模固定当前实现的简洁性更胜一筹。在本仓库中运行测试与覆盖率本仓库是一个 Go module见 go.modmodule github.com/halfrost/LeetCode-GoGo 版本要求 1.19单测文件与题解源码位于同一目录。在仓库根目录执行# 仅运行本题的单元测试 go test -v ./leetcode/1736.Latest-Time-by-Replacing-Hidden-Digits/ # 运行全部 leetcode 题解测试并输出覆盖率 go test -covermodeatomic -coverprofilecoverage.txt ./leetcode/...第二条命令与本仓库根目录的 gotest.sh 脚本逻辑一致脚本对./leetcode/...一次性执行go test -covermodeatomic -coverprofilecoverage.txt直接产出单一合法的覆盖率文件避免了对多个包分别-coverprofile再拼接导致的 profile 头重复问题。运行后可使用go tool cover -funccoverage.txt查看各函数的覆盖率明细确认maximumTime被全部用例命中。小结第 1736 题是典型的按位贪心字符串还原题分钟位无约束直接取最大小时位则依赖十位与个位的组合关系分情况取最大值最后用一步边界修正兜底。掌握这类先填局部最大、再修正全局非法组合的思路后类似还原最晚合法时间/日期的题目都可以套用同一套分析方法。仓库中对应的 README 题解、源码 与 测试 三份文件互为印证可作为后续刷题与自测的参考模板。【免费下载链接】LeetCode-Go✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% | LeetCode 题解项目地址: https://gitcode.com/GitHub_Trending/le/LeetCode-Go创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Windows原生部署vLLM实战:绕过系统级陷阱跑Qwen3-8B-FP8

Windows原生部署vLLM实战:绕过系统级陷阱跑Qwen3-8B-FP8

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/13 8:04:34
StarRocks表达式分区:动态时间治理与高性能查询的底层解法

StarRocks表达式分区:动态时间治理与高性能查询的底层解法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/13 8:04:34
配电网储能系统多目标优化选址定容方法研究

配电网储能系统多目标优化选址定容方法研究

1. 项目背景与核心挑战配电网储能系统的选址定容是当前电力系统优化领域的热点问题。随着可再生能源渗透率不断提高,电网面临着功率波动加剧、电压稳定性下降等挑战。储能系统作为灵活调节资源,其部署位置和容量配置直接影响着电网运行的经济性和可靠性。…

📅 2026/9/13 7:59:34
MORE NEWS

更多资讯

📰

Verilog序列检测器设计:1011串行检测与单周期脉冲生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

纯AI建站实测:3分钟生成可上线官网的完整路径与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Spring Boot校园二手交易平台开发实战

1. 项目背景与核心价值 校园二手交易平台是当前高校生态中极具实用价值的项目类型。随着大学生消费水平提升和物品更新换代加速,几乎每个学生宿舍都堆积着大量闲置物品——从教材、电子产品到生活用品。传统线下交易方式存在信息不对称、交易效率低下等问题&#xf…

📰

Spring循环依赖原理与解决方案详解

1. Spring循环依赖的本质与场景循环依赖指的是两个或多个Bean相互依赖形成闭环的情况。比如Bean A依赖Bean B,同时Bean B又依赖Bean A。这种场景在实际开发中并不少见,特别是在大型项目中模块划分不够清晰时更容易出现。Spring框架处理循环依赖的核心机制…

📰

Django与Flask混合架构在物业维修系统的实践

1. 项目背景与需求分析城市花园小区维修管理系统是一个典型的物业信息化解决方案,旨在通过数字化手段提升小区设备维护、报修响应和资源调度的效率。传统物业维修管理普遍存在工单流转慢、维修进度不透明、历史记录难追溯等问题。我们设计的系统需要实现以下核心功能…

📰

嵌入式Linux内核启动流程源码级跟踪与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬