先看看題目:
1342. Number of Steps to Reduce a Number to Zero
Easy

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

 

Constraints:

  • 0 <= num <= 10^6

附上通關證明:

截圖 2020-06-14 下午11.36.06

我的想法:題目就是在問算出一個數被2類似短除法需要幾個步驟。

其實就很簡單,整除就除2不整除就-1。

/**
 * @param {number} num
 * @return {number}
 */
var numberOfSteps  = function(num) {
    var step = 0;
    while(num!==0){
        step++;
        num = num%2===1 ? num-1 :num / 2
    }
    return step
};
arrow
arrow
    創作者介紹
    創作者 Deyu 的頭像
    Deyu

    西瓜是肥貓

    Deyu 發表在 痞客邦 留言(0) 人氣()