尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LeetCode 504. Base 7 题解:Go 语言十进制转七进制的取余倒排实现
LeetCode 504. Base 7 题解Go 语言十进制转七进制的取余倒排实现【免费下载链接】LeetCode-Go✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% | LeetCode 题解项目地址: https://gitcode.com/GitHub_Trending/le/LeetCode-Go导读本文围绕 LeetCode 第 504 题「Base 7七进制数」展开讲解如何将一个十进制整数转换为 7 进制字符串核心方法是反复除以 7 并收集余数最后倒序拼接。文章以 leetcode/0504.Base-7/README.md 为主体结合仓库内 504.Base 7.go 与 504.Base 7_test.go 的源码与测试进行印证读完你将掌握除基取余法的完整推导、负数与零等边界情况的处理技巧以及该解法在 Go 中的复杂度与可替代实现。题目描述给定一个整数num返回其 7 进制表示对应的字符串Given an integer num, return a string of its base 7 representation.。示例 1Input: num 100 Output: 202示例 2Input: num -7 Output: -10约束条件-10000000 num 10000000题目大意给定一个整数num将其转化为 7 进制并以字符串形式输出。示例中100的 7 进制为202即2*49 0*7 2 100负数-7则在正数转换结果10前加上负号得到-10。解题思路除基取余法原文档给出的解题思路非常凝练num 反复除以 7然后倒排余数。这本质上是进制转换中最通用的「除基取余division-remainder」算法适用于任意基数 B 的转换用num除以基数7得到商与余数将余数记录为当前最低位令num 商继续重复步骤 1直到商为 0将所有余数按从后往前的顺序拼接即从最高位到最低位得到最终结果。以num 100手工推演一遍与题目示例吻合轮次被除数除以 7 的商余数1100142214203202余数依次为[2, 0, 2]倒序排列得到202即最终答案。边界情况处理零与负数num 0直接返回0。若不加此特判循环条件num ! 0根本不会进入最终返回空字符串显然错误。这一步在 504.Base 7.go 中首先完成。num 0先记录负号标志negative true再将num取绝对值参与取余循环最后在结果前拼接-。这样避免了对负数直接取模时产生负余数保证每一位余数都落在[0, 6]区间内。以-7为例取绝对值7后余数依次为[0, 1]倒序得10加上负号即为-10。约束范围题目限定-10000000 num 10000000绝对值上限仅10^7远小于 Goint类型的表示范围因此-num取绝对值不存在溢出风险无需引入int64。代码实现以下为原文档给出的完整实现结合源码逐段解读package leetcode import strconv func convertToBase7(num int) string { if num 0 { return 0 } negative : false if num 0 { negative true num -num } var ans string var nums []int for num ! 0 { remainder : num % 7 nums append(nums, remainder) num num / 7 } if negative { ans - } for i : len(nums) - 1; i 0; i-- { ans strconv.Itoa(nums[i]) } return ans }代码要点说明取余循环remainder : num % 7收集余数num num / 7更新被除数二者配合完成「除基取余」的核心过程。Go 对正整数的除法向零截断因此循环必然在有限步内收敛到 0。倒序输出余数先入nums切片的是低位因此第二个循环从len(nums) - 1反向遍历将每位余数通过strconv.Itoa转为字符串后拼接得到从高位到低位的正确顺序。符号处理负号在倒序拼接之前先写入ans保证-出现在结果的最前端。仓库源码与测试印证实现文件仓库中的 504.Base 7.go 与 README 中给出的代码完全一致函数签名convertToBase7(num int) string位于leetcode包内是整个题解的唯一入口。测试用例504.Base 7_test.go 使用结构体question504内嵌para504与ans504组织测试数据覆盖了三种代表性场景输入num期望输出覆盖的分支100202正数、多位结果-7-10负数符号处理00零的特判测试在Test_Problem504中逐条执行一旦实际输出与期望不符立即调用t.Fatalf终止并报告错误504.Base 7_test.go。这三组用例恰好覆盖了函数中所有分支零特判、负数取绝对值、正常取余倒排具备良好的代码覆盖度。如何运行整个仓库使用标准 Go 测试框架模块定义见 go.mod可在仓库根目录执行以下命令运行全部 LeetCode 题解的测试go test ./leetcode/...若需生成覆盖率报告仓库根目录的 gotest.sh 提供了一键脚本以 atomic 模式输出单一合法的coverage.txt./gotest.sh单独验证本题可进入对应目录或直接指定包运行go test ./leetcode/ -run Test_Problem504 -v复杂度分析时间复杂度O(log₇|num|)。每次迭代num缩小为原来的 1/7迭代次数约为log₇|num|对于约束上限10^7而言最多约 9 轮效率极高。空间复杂度O(log₇|num|)。nums切片与最终字符串均需存储每一位余数/字符长度与迭代次数同阶。延伸标准库的替代实现除手写算法外Go 标准库strconv包也直接支持任意进制转换strconv.FormatInt(int64(num), 7)可将整数格式化为 236 进制的字符串且原生处理负号与零。例如strconv.FormatInt(100, 7) // 202 strconv.FormatInt(-7, 7) // -10 strconv.FormatInt(0, 7) // 0不过本题作为进制转换的入门题原文档选择手写「反复除以 7、倒排余数」的完整过程其教学价值在于让读者透彻理解取余、整除与符号拼接的底层原理而FormatInt适合在工程代码中追求简洁时直接使用。两种写法输出结果一致读者可自行对比体会。【免费下载链接】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

相关推荐

Spring Boot自动配置原理:从@SpringBootApplication到条件装配

Spring Boot自动配置原理:从@SpringBootApplication到条件装配

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

📅 2026/9/10 18:36:41
freeCodeCamp Daily Coding Challenge 301 “Last Load“ 全解析:用平均值预测洗衣粉剩余天数

freeCodeCamp Daily Coding Challenge 301 “Last Load“ 全解析:用平均值预测洗衣粉剩余天数

freeCodeCamp Daily Coding Challenge 301 "Last Load" 全解析:用平均值预测洗衣粉剩余天数 【免费下载链接】freeCodeCamp freeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free. 项目地址…

📅 2026/9/10 18:31:41
企业级元宇宙落地指南:AI加持与自主可控的数字空间底座

企业级元宇宙落地指南:AI加持与自主可控的数字空间底座

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

📅 2026/9/10 18:31:41
MORE NEWS

更多资讯

📰

CUDA环境配置实战:从GPU云服务器到PyTorch的全流程指南

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

📰

跨境电商自动化上架工具:凌风亚马逊采集实战解析

1. 项目概述:跨境电商自动化上架解决方案2026年的跨境电商战场,效率就是生命线。最近在深圳跨境电商圈子里测试了一款名为"凌风亚马逊采集"的工具,彻底解决了手动搬运商品信息的痛点。这个工具的核心价值在于:把原本需要…

📰

C++实现二叉搜索树(BST)核心原理与工程实践

1. 二叉搜索树基础概念解析二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,它满足以下关键性质:对于树中的任意节点,其左子树所有节点的值都小于该节点的值,而右子树所有节点的…

📰

OpenSSL 3.0 Provider架构实践:从零编写自定义摘要算法模块

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

📰

MATLAB与Ansys Maxwell联合仿真:COM接口实现自动化参数扫描

简介:这是一份用于MATLAB与Maxwell联合仿真优化分析的脚本,面向电磁场分析、天线设计、无线通信等领域的工程师和科研人员,解决跨平台建模与求解流程割裂、手动操作繁琐的痛点。资源包仅含1个m文件,压缩包大小2KB,文件…

📰

ClickHouse在物联网数据处理中的高性能实践

1. ClickHouse在物联网数据处理中的独特价值第一次接触ClickHouse是在2018年处理智能电表项目时,当时我们每天要处理超过20亿条电表读数记录。传统的关系型数据库完全无法应对这种规模的时间序列数据写入和查询,直到我们发现了这个来自俄罗斯的列式数据库…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬