Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a24d4e8

Browse files
1342: Number of Steps to Reduce a Number to Zero
1 parent bdc150b commit a24d4e8

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
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 |
Lines changed: 17 additions & 0 deletions
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+
}
Lines changed: 27 additions & 0 deletions
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`
Lines changed: 44 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /