File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ My solutions to LeetCode problems in Kotlin.
2424
| [412](https://leetcode.com/problems/fizz-buzz/) | [Fizz Buzz](src/main/kotlin/com/schmoczer/leetcode/_0412/FizzBuzz.kt) | Easy |
2525
| [773](https://leetcode.com/problems/sliding-puzzle/) | [Sliding Puzzle](src/main/kotlin/com/schmoczer/leetcode/_0773/SlidingPuzzle.kt) | Hard |
2626
| [796](https://leetcode.com/problems/rotate-string/) | [Rotate String](src/main/kotlin/com/schmoczer/leetcode/_0796/RotateString.kt) | Easy |
27+
| [1342](https://leetcode.com/problems/number-of-steps-to-reduce-a-number-to-zero/) | [Number of Steps to Reduce a Number to Zero](src/main/kotlin/com/schmoczer/leetcode/_1342/NumberOfStepsToReduceANumberToZero.kt) | Easy |
2728
| [1480](https://leetcode.com/problems/running-sum-of-1d-array/) | [Running Sum of 1d Array](src/main/kotlin/com/schmoczer/leetcode/_1480/RunningSumOf1dArray.kt) | Easy |
2829
| [1574](https://leetcode.com/problems/shortest-subarray-to-be-removed-to-make-array-sorted/) | [Shortest Subarray to be Removed to Make Array Sorted](src/main/kotlin/com/schmoczer/leetcode/_1574/ShortestSubarray.kt) | Medium |
2930
| [1672](https://leetcode.com/problems/richest-customer-wealth/) | [Richest Customer Wealth](src/main/kotlin/com/schmoczer/leetcode/_1672/RichestCustomerWealth.kt) | Easy |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.schmoczer.leetcode._1342
2+
3+
class NumberOfStepsToReduceANumberToZero {
4+
fun numberOfSteps(num: Int): Int {
5+
var reduced = num
6+
var steps = 0
7+
while (reduced > 0) {
8+
steps++
9+
if (reduced % 2 == 0) {
10+
reduced = reduced / 2
11+
} else {
12+
reduced -= 1
13+
}
14+
}
15+
return steps
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Number of Steps to Reduce a Number to Zero
2+
3+
Given an integer `num`, return the number of steps to reduce it to zero.
4+
5+
In one step, if the current number is even, you have to divide it by `2`, otherwise, you have to subtract `1` from it.
6+
7+
Example 1:
8+
9+
> Input: num = 14
10+
>
11+
> Output: 6
12+
13+
Example 2:
14+
15+
> Input: num = 8
16+
>
17+
> Output: 4
18+
19+
Example 3:
20+
21+
> Input: num = 123
22+
>
23+
> Output: 12
24+
25+
Constraints:
26+
27+
- `0 <= num <= 10^6`
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.schmoczer.leetcode._1342
2+
3+
import org.junit.jupiter.api.Assertions.assertEquals
4+
import org.junit.jupiter.api.BeforeEach
5+
import kotlin.test.Test
6+
7+
class NumberOfStepsToReduceANumberToZeroTest {
8+
private lateinit var sut: NumberOfStepsToReduceANumberToZero
9+
10+
@BeforeEach
11+
fun setUp() {
12+
sut = NumberOfStepsToReduceANumberToZero()
13+
}
14+
15+
@Test
16+
fun `6 steps to reduce number 14`() {
17+
val input = 14
18+
val expected = 6
19+
20+
val result = sut.numberOfSteps(input)
21+
22+
assertEquals(expected, result)
23+
}
24+
25+
@Test
26+
fun `4 steps to reduce number 8`() {
27+
val input = 8
28+
val expected = 4
29+
30+
val result = sut.numberOfSteps(input)
31+
32+
assertEquals(expected, result)
33+
}
34+
35+
@Test
36+
fun `12 steps to reduce number 123`() {
37+
val input = 123
38+
val expected = 12
39+
40+
val result = sut.numberOfSteps(input)
41+
42+
assertEquals(expected, result)
43+
}
44+
}

0 commit comments

Comments
 (0)