/**
*
* Ashish Patel
* e: ashishsushilPatel@gmail.com
* w: https://ashish.me
*
*/
/*
* 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.
*/
function numberOfStepsToReduceANumberToZero(num) {
if (num === 0) return 0
let steps = 0
while (num > 0) {
if (num % 2 === 0) {
num = num / 2
} else {
num -= 1
}
steps++
}
return steps
}
test('number Of Steps To Reduce A Number To Zero', () => {
expect(numberOfStepsToReduceANumberToZero(14)).toEqual(6)
})
Created 2020-04-20T12:42:51+00:00 · Edit