美文网首页
整数替换

整数替换

作者: 王王王王王景 | 来源:发表于2019-08-05 20:21 被阅读0次

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

  1. 如果 n 是偶数,则用 n / 2替换 n。
  2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n。
    n 变为 1 所需的最小替换次数是多少?

示例 1:

输入:
8

输出:
3

解释:
8 -> 4 -> 2 -> 1
示例 2:

输入:
7

输出:
4

解释:
7 -> 8 -> 4 -> 2 -> 1

7 -> 6 -> 3 -> 2 -> 1

递归的代码:

class Solution {
public:
    int integerReplacement(int n) {
        if(n == INT_MAX) return 32;
        if(n == 1) return 0;
        if(n % 2 == 0)
            return integerReplacement(n/2) + 1;
        int left = integerReplacement(n + 1) + 1;
        int right = integerReplacement(n - 1) + 1;
        return left < right ? left : right;
    }
};

使用位操作运算代码:

class Solution {
public:
    // 用位运算,最后一位是0直接右移,最后两位都是1,且该数不是3是,就选择+1,
    // 否则就选择-1,直到该数变成1,为防止越界,把n变成长整型
    int integerReplacement(int n) {
        long temp = n;
        int count = 0;
        while(temp != 1) {
            if((temp & 3 )== 3 && temp != 3) {    // 使用&的时候一定要加上()   eg : (temp & 3) 避免优先级问题
                ++temp;
            } else if((temp & 1) == 1) {
                --temp;
            } else {
                temp = temp >> 1;
            }
            ++count;
        }
        return count;
    }
};

相关文章

  • 整数替换

    给定一个正整数 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/oqyvdctx.html