当前位置: 首页 > news >正文

2026-05-01:整数的镜像距离。用go语言,给定一个整数 n,请计算它与其数字倒序后的数之间的差的绝对值。 其中,倒序后的数是把 n 的每一位数字反过来得到的新整数。 请返回这个绝对值结果。 1

2026-05-01:整数的镜像距离。用go语言,给定一个整数 n,请计算它与其数字倒序后的数之间的差的绝对值。

其中,倒序后的数是把 n 的每一位数字反过来得到的新整数。

请返回这个绝对值结果。

1 <= n <= 1000000000。

输入: n = 25。

输出: 27。

解释:

reverse(25) = 52。

因此,答案为 abs(25 - 52) = 27。

题目来自力扣3783。

一、分步详细执行过程

第一步:程序入口启动

程序从main函数开始运行,这是Go语言程序的执行起点。

  1. 定义变量n,并赋值为题目给定的输入值25
  2. 调用核心计算函数mirrorDistance(25),把 25 作为参数传入,开始计算镜像距离。

第二步:执行 mirrorDistance 函数(计算镜像距离)

这个函数的作用是:求原数和反转数的差的绝对值,执行步骤:

  1. 接收传入的参数:原数n = 25
  2. 调用reverse函数,传入 25,计算数字反转后的结果,等待函数返回反转值。
  3. 拿到反转结果后,计算:原数 - 反转数
  4. 判断计算结果是否小于0:
    • 如果小于0,取它的相反数(也就是绝对值);
    • 如果大于等于0,直接返回结果。
  5. 将最终的绝对值返回给main函数。

第三步:执行 reverse 函数(数字反转核心)

这个函数的作用是:把整数的每一位数字倒序排列,生成新整数,以输入 25 为例,步骤:

  1. 初始化一个结果变量res,赋值为0,用来存储反转后的数字。
  2. 进入循环:循环条件是当前数字大于 0,只要数字没处理完就一直循环。
    • 第一次循环(当前数字=25):
      1. 取数字的最后一位:25 对 10 取余,得到5
      2. 拼接反转数字:res = 0*10 + 5,res 变为5
      3. 去掉最后一位:25 除以 10(取整数),数字变为2
    • 第二次循环(当前数字=2):
      1. 取最后一位:2 对 10 取余,得到2
      2. 拼接反转数字:res = 5*10 + 2,res 变为52
      3. 去掉最后一位:2 除以 10,数字变为0
  3. 循环结束(数字变为0,不满足循环条件)。
  4. 将最终的反转结果52返回给mirrorDistance函数。

第四步:回到 mirrorDistance 函数完成计算

  1. 计算差值:原数 25 - 反转数 52 =-27
  2. 判断差值:-27 小于 0,因此取它的相反数27
  3. 将结果 27 返回给main函数。

第五步:main 函数输出结果

  1. 接收mirrorDistance函数返回的结果 27;
  2. 打印输出结果,最终控制台显示:27。

二、时间复杂度 & 额外空间复杂度分析

1. 总时间复杂度

时间复杂度取决于数字反转函数 reverse的循环次数:

  • 循环执行的次数 = 整数n数字位数(比如 25 是2位,循环2次;1234是4位,循环4次)。
  • 假设整数n的位数为k,时间复杂度为O(k)
  • 题目限定n ≤ 1000000000,最大位数是10位,循环最多执行10次,属于常数级时间复杂度

2. 总额外空间复杂度

程序运行过程中:

  • 只创建了固定数量的变量(res、diff、n等);
  • 没有使用数组、切片、map等动态扩容的数据结构;
  • 无论输入数字多大,占用的额外内存空间都是固定不变的。

因此总额外空间复杂度为:O(1)(常数级空间复杂度)。


总结

  1. 完整流程:启动程序→传入数值→反转数字→计算差值→取绝对值→输出结果;
  2. 时间复杂度:O(k)(k为数字的位数);
  3. 额外空间复杂度:O(1)

Go完整代码如下:

packagemainimport("fmt")funcreverse(nint)int{res:=0forn>0{res=res*10+n%10n/=10}returnres}funcmirrorDistance(nint)int{diff:=n-reverse(n)ifdiff<0{return-diff}returndiff}funcmain(){n:=25result:=mirrorDistance(n)fmt.Println(result)}

Python完整代码如下:

# -*-coding:utf-8-*-defreverse(n:int)->int:res=0whilen>0:res=res*10+n%10n//=10returnresdefmirror_distance(n:int)->int:diff=n-reverse(n)return-diffifdiff<0elsediffdefmain():n=25result=mirror_distance(n)print(result)if__name__=="__main__":main()

C++完整代码如下:

#include<iostream>usingnamespacestd;intreverse(intn){intres=0;while(n>0){res=res*10+n%10;n/=10;}returnres;}intmirrorDistance(intn){intdiff=n-reverse(n);if(diff<0){return-diff;}returndiff;}intmain(){intn=25;intresult=mirrorDistance(n);cout<<result<<endl;return0;}

http://www.jsqmd.com/news/731812/

相关文章:

  • Royal TSX免费版够用吗?实测10个连接限制下的个人开发者高效管理术
  • 7个高效技巧,让Maccy成为你的macOS剪贴板管理神器
  • 指尖的算法:用PianoPlayer重塑钢琴演奏的智能旅程
  • MPC-BE终极指南:如何用开源播放器征服所有视频格式?
  • Windows 11终极优化指南:免费开源工具Win11Debloat让你的系统重获新生
  • Boss-Key老板键:Windows隐私保护终极指南,一键隐藏窗口的免费开源神器
  • 智能售货机应用开发:从环境搭建到消息发送完整教程
  • AI工具实战指南:从对话生成到图像创作,构建个人高效工具箱
  • TVBoxOSC终极指南:5分钟让手机变身智能电视控制中心
  • 观测Taotoken平台用量与成本的实际体感与账单透明度
  • 从Modbus到PLC:深入车间,拆解一个真实RS485布线案例(含电缆选型与接地实战)
  • WinUtil终极指南:免费Windows系统管理工具箱,一键解决安装、优化、修复三大难题
  • 从ChatGPT到RAG:为什么你的应用效果不好?可能是文本向量没选对(附MTEB/C-MTEB选型指南)
  • 从OpenStreetMap到SUMO仿真:5分钟搞定真实城市路网导入与车辆配置
  • 开源跨平台内容发布引擎:基于Node.js的自动化博客同步方案
  • 手把手教你:H3C WA5300系列AP从瘦到胖的完整配置流程(含Bootrom操作避坑指南)
  • vcpkg踩坑实录:从安装PowerShell到解决多VS版本冲突,我的C++库管理避坑指南
  • 保姆级教程:用ADB命令和工程模式,快速鉴别你的Pixel是Verizon版还是解锁版
  • 完整指南:如何使用MedMNIST标准化医疗图像数据集加速医学AI基准测试
  • 从零构建高性能着陆页:技术选型、性能优化与部署实战
  • 微信立减金兑换码回收指南:分场景实操,新手零出错 - 可可收
  • Windows 11系统优化神器:Win11Debloat一键清理预装应用与隐私保护
  • 从洛谷P4799到LeetCode:手把手教你用折半搜索(Meet in the Middle)搞定大数组子集和问题
  • 感受 Taotoken 官方折扣活动对项目长期运行成本的实际影响
  • 第2节:规范驱动开发SDD,让AI永远在轨道上
  • 别再只会用tf2zp了!MATLAB信号处理工具箱里还有这些零极点转换函数(附对比与避坑指南)
  • 别再手动处理了!给群晖DSM装个Docker容器,自动把osheet转成Excel
  • 探索AI绘画新境界:chilloutmix_NiPrunedFp32Fix模型完全指南
  • 单机32核Swoole进程如何稳定支撑8600+ LLM并发长连接?内存占用压至1.2GB以下的11个内核级优化动作
  • 探索猫抓:解锁浏览器中隐藏的媒体资源宝藏