题目地址
难度:⭐
题目描述:
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
示例1:
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | 输入: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:
| 12
 3
 4
 5
 6
 7
 
 | 输入:num = 8输出:4
 解释:
 步骤 1) 8 是偶数,除以 2 得到 4 。
 步骤 2) 4 是偶数,除以 2 得到 2 。
 步骤 3) 2 是偶数,除以 2 得到 1 。
 步骤 4) 1 是奇数,减 1 得到 0 。
 
 | 
示例3:
限制:
🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️解题过程🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️🙋♂️
解题过程:
思路:
根据题目描述直接模拟就行了,while循环判断是否为0,循环中判断奇偶然后进行相关操作。
c++代码:(执行用时0ms,击败100.00%,内存消耗6.3M,击败5.00%)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | class Solution {public:
 int numberOfSteps (int num) {
 int result=0;
 while(num){
 
 if(num%2==0){
 num/=2;
 }else{
 --num;
 }
 ++result;
 }
 return result;
 }
 };
 
 | 
总结:
没有官方题解,题目比较简单,根据题意直接模拟就好了。