贪心算法(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));
    }
}
相关推荐
学不动CV了28 分钟前
C语言32个关键字
c语言·开发语言·arm开发·单片机·算法
你怎么知道我是队长1 小时前
python-enumrate函数
开发语言·chrome·python
小屁孩大帅-杨一凡1 小时前
如何解决ThreadLocal内存泄漏问题?
java·开发语言·jvm·算法
大熋1 小时前
Playwright Python 教程:网页自动化
开发语言·python·自动化
赟赟、嵌入式1 小时前
imx6ul Qt运行qml报错This plugin does not support createPlatformOpenGLContext!
开发语言·qt
cdg==吃蛋糕2 小时前
selenium 使用方法
开发语言·python
Y1nhl3 小时前
力扣_二叉树的BFS_python版本
python·算法·leetcode·职场和发展·宽度优先
爱掉发的小李3 小时前
前端开发中的输出问题
开发语言·前端·javascript
zyx没烦恼3 小时前
五种IO模型
开发语言·c++
Q_Q5110082853 小时前
python的婚纱影楼管理系统
开发语言·spring boot·python·django·flask·node.js·php