美文网首页
整数替换

整数替换

作者: xialu | 来源:发表于2021-11-19 22:27 被阅读0次

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-replacement

题目描述:

给定一个正整数 n ,你可以做如下操作:
如果 n 是偶数,则用 n / 2替换 n 。
如果 n 是奇数,则可以用 n + 1或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

思路:

dfs遍历

代码实现:
class Solution {
    public int result;
    public int integerReplacement(int n) {
        long num = (long) n;
        dfs(num, 0);
        return result;
    }
    public void dfs(long n, int num) {
        if (n == 1) {
            if (result == 0 || result > num) result = num;
            return;
        }
        if (isOne(n)) {
            dfs(n / 2, num + 1);
        } else {
            dfs((n - 1), num + 1);
            dfs((n + 1), num + 1);
        }
    }
    public boolean isOne(long n) {
        return n % 2 == 0;
    }
}

相关文章

  • 整数替换

    给定一个正整数 n,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n。 如果 n 是奇数,则可以用 ...

  • 整数替换

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intege...

  • 第二篇. EXCEL查找、替换、定位

    第二篇. 查找、替换、定位 1.小数变整数 选取数字区域,ctrl+h打开替换窗口,查找.*,替换留空然后点全部替...

  • 397. 整数替换(Python)

    题目 难度:★★☆☆☆类型:数组方法:数学 力扣链接请移步本题传送门更多力扣中等题的解决方案请移步力扣中等题目录 ...

  • 397. 整数替换-leetcode

    给定一个正整数 n,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n。 如果 n 是奇数,则可以用 ...

  • JS笔试题—整数替换

    题目:给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。如果 n 是奇数,则...

  • 397. Integer Replacement 整数替换

    Given a positive integer n and you can do operations as f...

  • LeetCode刷题之路 整数替换

    给定一个正整数 n,你可以做如下操作: \1. 如果 n 是偶数,则用 n / 2替换 n。\2. 如果 n 是奇...

  • 蓝杯四十一

    算法训练 数组查找及替换 时间限制:1.0s 内存限制:512.0MB 问题描述 给定某整数数组和某一整数b...

  • 「算法」1005. K 次取反后最大化的数组和

    给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为...

网友评论

      本文标题:整数替换

      本文链接:https://www.haomeiwen.com/subject/fpnetrtx.html