X

LEETCODE 1342. Number of Steps to Reduce a Number to Zero 解题思路分析

题目大意:

将数字变成 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

如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=1342

解题思路分析:

这道题我想大家都应该会做吧。按照题意,不断地将num除以2或者减去一,直到num变为0即可。

实现代码:

public int numberOfSteps (int num) {
    // 返回结果,操作次数
    int res=0;
    while(num > 0){
        // 如果可以被2整除,除以2
        if(num%2==0) num/=2;
        // 反之减去一
        else num--;
        // 操作次数加一
        res++;
    }
    return res;
}

本题解法执行时间为0ms。

Runtime: 0 ms, faster than 100.00% of Java online submissions for Number of Steps to Reduce a Number to Zero.

Memory Usage: 36.5 MB, less than 100.00% of Java online submissions for Number of Steps to Reduce a Number to Zero.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: http://leetcode.jp/leetcode-1342-number-of-steps-to-reduce-a-number-to-zero-解题思路分析/
Categories: leetcode
kwantong: