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

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

附上通關證明:

我的想法:題目就是在問算出一個數被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
};
文章標籤
全站熱搜
創作者介紹
創作者 Deyu 的頭像
Deyu

西瓜是肥貓

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