Skip to content

Commit bd55393

Browse files
committed
MissingNumber: adjust naming & solution. Add YT link
1 parent 2a04021 commit bd55393

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

src/main/java/by/andd3dfx/numeric/MissingNumber.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
* Explanation:
2525
* n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.
2626
* </pre>
27+
*
28+
* @see <a href="https://youtu.be/JGqssodAKJM">Video solution</a>
2729
*/
2830
public class MissingNumber {
2931

30-
public int missingNumber(int[] nums) {
32+
public int find_On_memory(int[] nums) {
3133
var n = nums.length;
3234
var flags = new boolean[n + 1];
3335
for (var num : nums) {
@@ -38,22 +40,24 @@ public int missingNumber(int[] nums) {
3840
return i;
3941
}
4042
}
41-
return -1;
43+
throw new IllegalStateException();
4244
}
4345

44-
public int missingNumber2(int[] nums) {
46+
public int find_O1_memory(int[] nums) {
4547
var n = nums.length;
4648
for (var i = 0; i < n; i++) {
47-
var num = Math.abs(nums[i]);
48-
if (num < n) {
49-
nums[num] = -nums[num];
49+
var index = Math.abs(nums[i]);
50+
if (index < n) {
51+
nums[index] = -nums[index];
5052
}
5153
}
54+
5255
for (var i = 0; i < n; i++) {
5356
if (nums[i] > 0) {
5457
return i;
5558
}
5659
}
60+
5761
return n;
5862
}
5963
}

src/test/java/by/andd3dfx/numeric/MissingNumberTest.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,29 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5+
import org.junit.Before;
56
import org.junit.Test;
67

78
public class MissingNumberTest {
89

9-
private final MissingNumber missingNumber = new MissingNumber();
10+
private MissingNumber missingNumber;
11+
12+
@Before
13+
public void setUp() throws Exception {
14+
missingNumber = new MissingNumber();
15+
}
1016

1117
@Test
12-
public void testMissingNumber() {
13-
assertThat(missingNumber.missingNumber(new int[]{3, 0, 1})).isEqualTo(2);
14-
assertThat(missingNumber.missingNumber(new int[]{0, 1})).isEqualTo(2);
15-
assertThat(missingNumber.missingNumber(new int[]{9, 6, 4, 2, 3, 5, 7, 0, 1})).isEqualTo(8);
18+
public void find_On_memory() {
19+
assertThat(missingNumber.find_On_memory(new int[]{3, 0, 1})).isEqualTo(2);
20+
assertThat(missingNumber.find_On_memory(new int[]{0, 1})).isEqualTo(2);
21+
assertThat(missingNumber.find_On_memory(new int[]{9, 6, 4, 2, 3, 5, 7, 0, 1})).isEqualTo(8);
1622
}
1723

1824
@Test
19-
public void testMissingNumber2() {
20-
assertThat(missingNumber.missingNumber2(new int[]{3, 0, 1})).isEqualTo(2);
21-
assertThat(missingNumber.missingNumber2(new int[]{0, 1})).isEqualTo(2);
22-
assertThat(missingNumber.missingNumber2(new int[]{9, 6, 4, 2, 3, 5, 7, 0, 1})).isEqualTo(8);
25+
public void find_O1_memory() {
26+
assertThat(missingNumber.find_O1_memory(new int[]{3, 0, 1})).isEqualTo(2);
27+
assertThat(missingNumber.find_O1_memory(new int[]{0, 1})).isEqualTo(2);
28+
assertThat(missingNumber.find_O1_memory(new int[]{9, 6, 4, 2, 3, 5, 7, 0, 1})).isEqualTo(8);
2329
}
2430
}

0 commit comments

Comments
 (0)