LeetCode 397 整数替换
文章目录摘要描述题解答案题解代码分析为什么偶数直接除以 2奇数时为什么看 n % 4为什么 n3 要特殊处理用循环而不是递归示例 2 简要过程n 7示例测试及结果示例 1n 8示例 2n 7示例 3n 4示例 4n 3示例 5n 1时间复杂度空间复杂度实际应用场景总结摘要这道题给一个正整数 n每次可以若 n 是偶数则用 n/2 替换若 n 是奇数则用 n1 或 n-1 替换。问最少几步能把 n 变成 1。暴力可以做 BFS 或记忆化搜索但 n 最大到 2^31-1状态太多。用贪心偶数一定除以 2奇数时希望下一步能多除几次 2所以看 n 模 4——若 n4k1 选 n-1 得到 2k 能再除一次 2若 n4k3 选 n1 得到 2k2 能再除一次 2。特例是 n33→2→1 两步3→4→2→1 三步所以 3 要选 n-1。按这个规则迭代或递归即可在 O(log n) 内得到最少步数。下面用 Swift 实现并说明贪心依据。描述给定正整数 n可以做两种操作若 n 为偶数用 n/2 替换 n若 n 为奇数用 n1 或 n-1 替换 n。返回 n 变为 1 所需的最小替换次数。示例 1输入 n 8 输出 3 解释 8 - 4 - 2 - 1示例 2输入 n 7 输出 4 解释 7 - 8 - 4 - 2 - 1 或 7 - 6 - 3 - 2 - 1示例 3输入 n 4 输出 2提示1 n 2^31 - 1核心思路偶数一律除以 2奇数时用「下一步能多除 2」的贪心选 1 或 -1并单独处理 n3。题解答案classSolution{funcintegerReplacement(_n:Int)-Int{varnumnvarsteps0whilenum!1{ifnum%20{num/2steps1}else{ifnum3{num2steps1}elseifnum%41{num-1steps1}else{num1steps1}}}returnsteps}}题解代码分析为什么偶数直接除以 2偶数时只有一种操作n/2。除以 2 能让数尽快变小且不会「浪费」一步去做 1/-1 再等下次除 2所以偶数时一定选 n/2。奇数时为什么看 n % 4奇数只能 1 或 -1变成偶数后再除 2。我们希望「下一步能连续除 2 的次数尽量多」这样更快接近 1。设 n2k1则 n-12k、n12k2。再除一次 2 得到 k 和 k1。若 k 是偶数则 (n-1)/2 还能再除 2若 k1 是偶数则 (n1)/2 还能再除 2。n4k1 时(n-1)/22k 为偶(n1)/22k1 为奇选 n-1 更有利。n4k3 时(n-1)/22k1 为奇(n1)/22k2 为偶选 n1 更有利。所以规则是n % 4 1 用 n-1n % 4 3 用 n1。为什么 n3 要特殊处理n3 时 3 % 4 3按上面会选 n1 得到 4路径 3→4→2→1 共 3 步。但若选 n-1 得到 2路径 3→2→1 只要 2 步。原因是 3 离 1 已经很近1 反而多绕一步。所以单独判断若 n 3 则用 n-1。用循环而不是递归n 最大 2^31-1按上述规则步数约为 O(log n)循环迭代 log n 次即可避免递归栈。用var num n和while num ! 1每次按规则更新 num 并累加 steps最后返回 steps。示例 2 简要过程n 77 为奇且 7 % 4 3选 1 → 88 为偶 → 4 → 2 → 1。共 4 步与输出一致。示例测试及结果示例 1n 88→4→2→13 步输出3。示例 2n 77→8→4→2→14 步输出4。示例 3n 44→2→12 步输出2。示例 4n 33→2→12 步若按 %4 选 1 会得到 3 步特例处理后为 2。示例 5n 1已是 10 步输出0题目 n1若传入 1 则循环不执行返回 0。时间复杂度每次要么除以 2n 至少减半要么 ±1 后变成偶数再除整体规模约每次减半或接近减半步数 O(log n)单次操作 O(1)总时间O(log n)。空间复杂度只用了若干变量O(1)。实际应用场景类似「用最少步数把数变成 1」的规则在游戏步数、状态机最简路径、或某些编码/解码步数分析里会碰到。贪心「能除 2 就除、奇数时选下一步更能除」的思路在规则简单、有明确「更优下一步」时常用。总结整数替换的最小步数可以用贪心偶数一律 n/2奇数时 n % 4 1 用 n-1n % 4 3 用 n1并单独把 n3 设为 n-1。按此规则迭代直到 n 变为 1步数即为答案时间 O(log n)、空间 O(1)。

相关新闻

2026运维转型必看:OpenClaw让故障自愈率达90%,MTTR压缩至30分钟

2026运维转型必看:OpenClaw让故障自愈率达90%,MTTR压缩至30分钟

数字化转型进入深水区,混合云、微服务、容器化让IT架构呈指数级复杂。传统运维正陷入人力不足、响应滞后、故障频发、数据孤岛的死循环: 日均80%精力消耗在重复巡检、日志排查、服务重启等低价值操作夜间/节假日故障响应延迟超2小时,业务中断…

2026/5/17 8:19:55 阅读更多 →
提示工程架构师疑惑:Agentic AI到底有用?8个真实案例给你答案

提示工程架构师疑惑:Agentic AI到底有用?8个真实案例给你答案

Agentic AI到底香不香?8个真实场景案例揭开谜底 摘要/引言:从“工具人”到“合作者”,Agentic AI正在改写AI的边界 清晨8点,生物实验室的研究员打开电脑,发现AI Agent已经完成了 overnight 的工作:它自主分…

2026/7/6 5:44:08 阅读更多 →
hadoop+Spark+django基于大数据的足球数据分析与可视化(源码+文档+调试+可视化大屏)

hadoop+Spark+django基于大数据的足球数据分析与可视化(源码+文档+调试+可视化大屏)

前言Django基于大数据的足球数据分析与可视化是一个结合了现代信息技术和数据分析的综合性项目,以下是对该项目的详细介绍: 一、项目背景与意义 随着大数据技术的快速发展,数据可视化在各个领域的应用日益广泛。在足球领域,通过对…

2026/7/7 1:13:16 阅读更多 →

最新新闻

ORB-SLAM3 SearchByBoW 2

ORB-SLAM3 SearchByBoW 2

以下是ORB-SLAM3中ORBmatcher::SearchByBoW函数的完整代码及详细解读。&#x1f4c4; 完整代码cppint ORBmatcher::SearchByBoW(KeyFrame* pKF, Frame &F, vector<MapPoint*> &vpMapPointMatches) {// 1. 获取关键帧的地图点const vector<MapPoint*> vpMap…

2026/7/7 6:43:49 阅读更多 →
F28377D Modbus RTU移植:硬件时序、寄存器映射与实时性硬核实践

F28377D Modbus RTU移植:硬件时序、寄存器映射与实时性硬核实践

1. 项目概述&#xff1a;为什么“半小时搞定”在嵌入式领域是个危险信号“跨平台移植modbus&#xff0c;从STM32到TMS320F28377D&#xff0c;kimi 2.6半小时搞定”——这个标题在嵌入式工程师朋友圈刷屏时&#xff0c;我正蹲在产线调试一台F28377D驱动的伺服控制器。第一反应不…

2026/7/7 6:39:48 阅读更多 →
BurpSuite乱码全解析:从编码原理到实战解决content-Encoding显示问题

BurpSuite乱码全解析:从编码原理到实战解决content-Encoding显示问题

1. 项目概述&#xff1a;当BurpSuite遇上乱码如果你是一名Web安全测试人员或者开发者&#xff0c;那么BurpSuite这个工具对你来说肯定不陌生。它几乎是渗透测试、接口调试和Web应用分析领域的“瑞士军刀”。但在日常使用中&#xff0c;一个看似简单却极其恼人的问题频繁出现&am…

2026/7/7 6:37:48 阅读更多 →
射频前端调试:阻抗匹配与PCB布局实战指南

射频前端调试:阻抗匹配与PCB布局实战指南

1. 射频前端调试的核心痛点解析在无线通信设备开发中&#xff0c;射频前端模块&#xff08;RF Front-End&#xff09;的调试历来是工程师最头疼的环节。我经手过的WiFi模块、4G模块项目中&#xff0c;约70%的后期问题都源于射频部分性能不达标。其中最常见的现象就是&#xff1…

2026/7/7 6:37:48 阅读更多 →
ScienceDecrypting:永久解锁加密学术文献,告别7天阅读限制

ScienceDecrypting:永久解锁加密学术文献,告别7天阅读限制

ScienceDecrypting&#xff1a;永久解锁加密学术文献&#xff0c;告别7天阅读限制 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。…

2026/7/7 6:33:47 阅读更多 →
支付安全基石:TR31与TR34标准的核心原理、应用与实战避坑指南

支付安全基石:TR31与TR34标准的核心原理、应用与实战避坑指南

1. 项目概述&#xff1a;TR31与TR34标准在支付安全中的核心地位在支付行业摸爬滚打十几年&#xff0c;我处理过无数次密钥交换、加密机对接和合规审计。每当提到“安全加密的高效解决方案”&#xff0c;尤其是在金融支付领域&#xff0c;TR31和TR34这两个标准是无法绕开的基石。…

2026/7/7 6:33:47 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集&#xff0c;从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高&#xff1a;流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广&#xff0c;是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队&#xff0c;往往容易卡在一容易踩坑的选型难题&#xff1a; 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定&#xff0c;必须同时依赖「文本语义理解 实体关系推理」时&#xff0c;到底是做「向量图谱混合检索」就够了&#xff0c;还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻