code.ashish.me

Atom feed

Recently added: 128 Longest Consecutive Sequence, 347 Top K Frequent Elements, 045 Jump Game 2, 228 Summary Ranges, 219 Contains Duplicate 2

1342 Number Of Steps To Reduce A Number To Zero

/**
 *
 * 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