贪心算法(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));
    }
}
相关推荐
许长安10 小时前
C/C++中的extern关键字详解
c语言·开发语言·c++·经验分享·笔记
雾岛—听风10 小时前
P1012 [NOIP 1998 提高组] 拼数
算法
papership11 小时前
【入门级-算法-5、数值处理算法:高精度的乘法】
数据结构·算法
earthzhang202111 小时前
【1039】判断数正负
开发语言·数据结构·c++·算法·青少年编程
谈笑也风生11 小时前
只出现一次的数字 II(一)
数据结构·算法·leetcode
蕓晨11 小时前
auto 自动类型推导以及注意事项
开发语言·c++·算法
mjhcsp11 小时前
C++ 递推与递归:两种算法思想的深度解析与实战
开发语言·c++·算法
_OP_CHEN11 小时前
算法基础篇:(三)基础算法之枚举:暴力美学的艺术,从穷举到高效优化
c++·算法·枚举·算法竞赛·acm竞赛·二进制枚举·普通枚举
m0_7482480211 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
java·开发语言·c++·算法
天选之女wow11 小时前
【代码随想录算法训练营——Day61】图论——97.小明逛公园、127.骑士的攻击
算法·图论