LeetCode刷题之1342. 将数字变成 0 的操作次数

LeetCode刷题之1342. 将数字变成 0 的操作次数

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
  • 示例
示例 1 :
输入:num = 14
输出:6
解释:
步骤 1) 14 是偶数,除以 2 得到 7 。
步骤 2) 7 是奇数,减 1 得到 6 。
步骤 3) 6 是偶数,除以 2 得到 3 。
步骤 4) 3 是奇数,减 1 得到 2 。
步骤 5) 2 是偶数,除以 2 得到 1 。
步骤 6) 1 是奇数,减 1 得到 0 。
示例 2 :
输入:num = 8
输出:4
解释:
步骤 1) 8 是偶数,除以 2 得到 4 。
步骤 2) 4 是偶数,除以 2 得到 2 。
步骤 3) 2 是偶数,除以 2 得到 1 。
步骤 4) 1 是奇数,减 1 得到 0 。
示例 3 :
输入:num = 123
输出:12
  • 提示
    • 0 <= num <= 10^6
  • 代码:
class Solution:
    def numberOfSteps (self, num: int) -> int:
        Bin = list(bin(num)[2:])
        return len(Bin) + Bin.count('1') - 1
# 执行用时 :28 ms, 在所有 Python3 提交中击败了97.40%的用户
# 内存消耗 :13.6 MB, 在所有 Python3 提交中击败了100.00%的用户
  • 算法说明:
    将数字转化成二进制,求出一共有多少位,即需要进行多少次÷2操作,即右移操作,由于最高位的“1”不需要÷2操作,所以总数-1。求出有多少个“1”,就需要进行多少次-1操作。

你可能感兴趣的:(胡萝卜的code_python)