贪心算法(20)(java)整数替换

给定一个正整数 n ,你可以做如下操作:

  1. 如果 n是偶数,则用 n / 2替换 n
  2. 如果 n是奇数,则可以用 n + 1n - 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

解法:

模拟(递归+记忆化搜索)

java 复制代码
public class Solution {
    public int integerReplacement(int n)
    {
        return dfs(n*1l);

    }
    public  int dfs(long n)
    {
        if(n==1){
            return 0;
        }
        if(n%2==0)
        {
            return 1+ dfs(n/2);
        }else {
            return 1+Math.min(dfs(n-1),dfs(n+1));
        }
    }

    public static void main(String[] args) {
        Solution solution=new Solution();
           int n= 8;
        System.out.println(solution.integerReplacement(n));
    }
}
相关推荐
链上Sniper1 分钟前
Python 区块链开发实战:从零到一构建智能合约
开发语言·网络·python·架构·区块链·php·智能合约
黄雪超4 分钟前
JVM——类加载的流程与机制
开发语言·jvm·python
heart000_18 分钟前
C++ 基础知识总结(超详细整理)
java·开发语言·c++
星辰离彬24 分钟前
Java Stream 高级实战:并行流、自定义收集器与性能优化
java·开发语言·后端·性能优化
前端拿破轮25 分钟前
【代码随想录刷题总结】leetcode27-移除元素
算法·leetcode
俺不是西瓜太郎´•ﻌ•`36 分钟前
并查集与拓扑排序(题目JAVA)
java·开发语言
于冬恋1 小时前
Web后端开发(SpringBootWeb、HTTP、Tomcat快速入门)
java·开发语言
C_V_Better1 小时前
Java Spring Boot 自定义注解详解与实践
java·开发语言·spring boot
王哥儿聊AI1 小时前
MaskSearch:提升智能体搜索能力的新框架
大数据·人工智能·算法·语言模型·自然语言处理
纪元A梦1 小时前
分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解
java·分布式·算法