[LeetCode-1342]Number of Steps to Reduce a Number to Zero

该题是easy,比较简单,我用的是常规的方法,看到了一行实现的大神。。。

文章目录

题目相关

【题目解读】
给定一个数(0~ 1 0 6 10^6 ),判断该数经过减1 或 除2操作到达0所需要的步数。

【原题描述】原题链接
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

【难度】Easy

Solution

比较简单,直接判断下当前是否是奇数,如果是奇数进行减一操作,是偶数直接除2。
代码如下,做不到大神那样1行代码搞定,自己下来也需要6行代码。

class Solution {
public:
    int numberOfSteps (int num) {
        int step = 0;
        while(num != 0)
        {
            if(num %2 == 1) num -= 1;
            else num /=2;
            
            step++;
        }
        
        return step;
        
    }
};
发布了134 篇原创文章 · 获赞 30 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/donaldsy/article/details/105303777