news 2026/10/22 20:57:02

千问 LeetCode 397. 整数替换 Java实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
千问 LeetCode 397. 整数替换 Java实现

这题的核心思路很直接:偶数直接除以 2,奇数时在 n + 1 和 n - 1 之间选一个能让后续步骤更少的方向。

贪心 + 位运算(推荐)

class Solution {
public int integerReplacement(int n) {
long m = n;
int count = 0;
while (m != 1) {
if ((m & 1) == 0) {
m >>= 1;
} else if (m == 3 || (m & 3) == 1) {
m–;
} else {
m++;
}
count++;
}
return count;
}
}

要点:

  • m & 1 == 0:偶数,直接右移一位,相当于 / 2。
  • m == 3:特殊处理,减 1 更优,因为 3 -> 2 -> 1 比 3 -> 4 -> 2 -> 1 少一步。
  • (m & 3) == 1:末尾两位是 01,减 1 后能更快出现连续 0,优先减。
  • (m & 3) == 3:末尾两位是 11,加 1 能产生更多低位 0,优先加。
  • 用 long 是为了避免 n = Integer.MAX_VALUE 时 n + 1 溢出。

时间复杂度:O(log n)
空间复杂度:O(1)

记忆化递归

class Solution {
Map<Integer, Integer> memo = new HashMap<>();

public int integerReplacement(int n) { if (n == 1) return 0; if (!memo.containsKey(n)) { if (n % 2 == 0) { memo.put(n, 1 + integerReplacement(n / 2)); } else { memo.put(n, 2 + Math.min( integerReplacement(n / 2), integerReplacement(n / 2 + 1) )); } } return memo.get(n); }

}

这里奇数时把 n + 1、n - 1 后的下一步 / 2 合并成两次操作,所以是 2 + min(…)。

时间复杂度:O(log n)
空间复杂度:O(log n)

面试里如果追求简洁和性能,优先写第一种;如果想体现递归和剪枝思路,可以补上第二种。

需要我帮你把这道题和 LeetCode 375(猜数字大小)放在一起对比,说说两道题在状态压缩思路上的异同吗?

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

多轮对话:用持久化记住历史

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录多轮对话&#…

作者头像 李华
网站建设 2026/10/22 20:55:14

Checkpointer 基础:把图的状态存下来

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录Checkpointer 基…

作者头像 李华
网站建设 2026/10/22 20:29:26

本地高精度测温与远程多区采集:嵌入式HVAC温度监测方案解析

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

作者头像 李华
网站建设 2026/10/22 20:25:08

构建移动安全防线:Android漏洞挖掘与合规渗透测试学习指南

抱歉&#xff0c;这个请求我无法处理。Android 远程管理工具&#xff08;RAT&#xff09;属于可被用于恶意控制他人设备的工具&#xff0c;本平台的内容安全明确规定&#xff1a;不得输出任何涉及远程控制、入侵他人设备、窃取隐私、恶意监控等用途的工具安装教程、操作指引或技…

作者头像 李华
网站建设 2026/10/22 20:22:48

四旋翼无人机开发实战:飞控、NX与基站联调指南

四旋翼无人机、飞控、基站、NX&#xff0c;这四个词凑在一起&#xff0c;其实是一套很典型的开发平台组合。我自己刚做完一轮硬件选型加整机联调&#xff0c;感觉这玩意儿真正花时间的不是装机&#xff0c;而是把算力、姿态控制和地面链路三套系统拧在一起。很多人以为把电机电…

作者头像 李华