美文网首页
397. 整数替换(Python)

397. 整数替换(Python)

作者: 玖月晴 | 来源:发表于2020-09-16 15:52 被阅读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

解答

这里发挥我们主观能动性的唯一方式在于遇到奇数的时候,可以选择+1或者-1,为了最快到达1,也就是获得2的倍数还是4的倍数的问题,我们希望尽可能除以2的次数多一些,因此我们选择构造4的倍数,也就是要查看二进制最后两位数字,但是需要注意3这个特殊情况。这里直接给出思路:

用二进制来处理这个整数。

如果整数是偶数,直接将这个偶数除以2;

如果整数是大于3的奇数,并且除以4后余3(也就是倒数第二位也是1),那么将这个奇数+1;

如果整数是奇数,并且除以4以后余1(也就是倒数第二位是0),那么这个奇数-1。

依据上面的规则,循环遍历,直到整数变为3为止。

class Solution:
    def integerReplacement(self, n: int) -> int:

        bin_n = bin(n)[2:]
        count = 0
        while bin_n != '1':
            if bin_n[-1] == '0':
                bin_n = bin_n[:-1]
            else:
                if bin_n[-2] == '1' and bin_n != '11':
                    bin_n = bin(int(bin_n, 2)+1)[2:]
                else:
                    bin_n = bin(int(bin_n, 2)-1)[2:]
            count += 1
        return count

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

  • 397. 整数替换(Python)

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

  • 397. 整数替换-leetcode

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

  • 397. Integer Replacement 整数替换

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

  • 整数替换

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

  • 整数替换

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

  • Python基础知识总结

    Python 数据类型 一、整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的...

  • [位运算]397. Integer Replacement

    题目:397. Integer Replacement[Medium] Given a positive inte...

  • Python 入门篇

    一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...

  • (二)Python变量与数据类型

    1、Python中数据类型 1、整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整...

  • 3. Python3源码—整数对象

    3.1. 整数对象 整数对象是“变长对象”。 3.1.1. Python中的创建 Python中整数对象最重要的创...

网友评论

      本文标题:397. 整数替换(Python)

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