列表

详情


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

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int numberOfSteps(int num) { } };

rust 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-09-15 10:38:37

impl Solution {
    pub fn number_of_steps(mut num: i32) -> i32 {
        let mut ans = 0;
        while num != 0 {
            num = if num % 2 == 0 { num/2 } else { num-1 };
            ans += 1;
        }
        ans as i32
    }
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 6.4 MB, 提交时间: 2023-09-15 10:35:38

class Solution {
public:
    int numberOfSteps(int num) {
        int ans = 0;
        while ( num != 0 ) {
            num = num % 2 == 0 ? num / 2 : num - 1;
            ans++;
        }
        return ans;
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 38.3 MB, 提交时间: 2023-09-15 10:34:36

class Solution {
    public int numberOfSteps(int num) {
        int ans = 0;
        while ( num != 0 ) {
            num = num % 2 == 1 ? num - 1 : num / 2;
            ans++;
        }
        return ans;
    }
}

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-09-15 10:33:03

func numberOfSteps(num int) int {
    ans := 0
    for num != 0 {
        if num % 2 == 0 {
            num /= 2
        } else {
            num--
        }
        ans++
    }
    return ans
}

python3 解法, 执行用时: 52 ms, 内存消耗: 15.7 MB, 提交时间: 2023-09-15 10:32:05

class Solution:
    def numberOfSteps(self, num: int) -> int:
        ans = 0
        while num != 0:
            num = num // 2 if num % 2 == 0 else num - 1
            ans += 1
        return ans

php 解法, 执行用时: 4 ms, 内存消耗: 15.3 MB, 提交时间: 2021-05-14 18:22:09

class Solution {

    /**
     * @param Integer $num
     * @return Integer
     */
    function numberOfSteps($num) {
        $ans = 0;
        while ( $num != 0 ) {
            if ( $num % 2 == 0 ) $num >>= 1;
            else $num = $num ^ 1;
            $ans++;
        }
        return $ans;
    }
}

php 解法, 执行用时: 8 ms, 内存消耗: 15.1 MB, 提交时间: 2021-05-14 18:17:53

class Solution {

    /**
     * @param Integer $num
     * @return Integer
     */
    function numberOfSteps($num) {
        $ans = 0;
        while ( $num != 0 ) {
            $num = ( $num % 2 == 0 ) ? $num/2: $num-1;
            $ans++;
        }
        return $ans;
    }
}

上一题