leetcode 1342. Number of Steps to Reduce a Number to Zero(python)

描述

Given a non-negative integer num, return the number of steps to reduce it to zero. If the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

Example 1:

Input: num = 14
Output: 6
Explanation: 
Step 1) 14 is even; divide by 2 and obtain 7. 
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3. 
Step 4) 3 is odd; subtract 1 and obtain 2. 
Step 5) 2 is even; divide by 2 and obtain 1. 
Step 6) 1 is odd; subtract 1 and obtain 0.	

Example 2:

Input: num = 8
Output: 4
Explanation: 
Step 1) 8 is even; divide by 2 and obtain 4. 
Step 2) 4 is even; divide by 2 and obtain 2. 
Step 3) 2 is even; divide by 2 and obtain 1. 
Step 4) 1 is odd; subtract 1 and obtain 0.

Example 3:

Input: num = 123
Output: 12

Note:

0 <= num <= 10^6

解析

根据题意,只需要对 num 进行判断,如果其为偶数,则除二,否则减一,直到 num 变为 0 ,对每个操作进行计数即可得到最后的结果。

解答

class Solution(object):
    def numberOfSteps (self, num):
        """
        :type num: int
        :rtype: int
        """
        res = 0
        while num!=0:
            if num%2==0:
                num /= 2
                res += 1
            else:
                num -= 1
                res += 1
        return res

运行结果

Runtime: 16 ms, faster than 76.09% of Python online submissions for Number of Steps to Reduce a Number to Zero.
Memory Usage: 13.5 MB, less than 38.47% of Python online submissions for Number of Steps to Reduce a Number to Zero.

原题链接:https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero

您的支持是我最大的动力

猜你喜欢

转载自blog.csdn.net/wang7075202/article/details/115378428