Skip to content

Commit d11a15a

Browse files
authored
2022-08-15 update: updated "Two Sum" (#69)
1 parent 2502572 commit d11a15a

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

src/main/java/com/smlnskgmail/jaman/leetcodejava/easy/TwoSum.java

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,42 @@
11
package com.smlnskgmail.jaman.leetcodejava.easy;
22

3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
38
// https://leetcode.com/problems/two-sum/
49
public class TwoSum {
510

6-
private final int[] array;
11+
private final int[] nums;
712
private final int target;
813

914
public TwoSum(int[] array, int target) {
10-
this.array = array;
15+
this.nums = array;
1116
this.target = target;
1217
}
1318

1419
public int[] solution() {
15-
for (int i = 0; i < array.length; i++) {
16-
for (int j = 0; j < array.length; j++) {
17-
if (array[i] + array[j] == target) {
18-
return new int[]{i, j};
20+
Map<Integer, List<Integer>> numbers = new HashMap<>();
21+
for (int i = 0; i < nums.length; i++) {
22+
int num = nums[i];
23+
if (numbers.containsKey(num)) {
24+
numbers.get(num).add(i);
25+
} else {
26+
List<Integer> indices = new ArrayList<>();
27+
indices.add(i);
28+
numbers.put(num, indices);
29+
}
30+
}
31+
for (int i = 0; i < nums.length; i++) {
32+
int num = nums[i];
33+
int diff = target - num;
34+
if (numbers.containsKey(diff)) {
35+
var indices = numbers.get(diff);
36+
for (int index : indices) {
37+
if (index != i) {
38+
return new int[]{i, index};
39+
}
1940
}
2041
}
2142
}

src/test/java/com/smlnskgmail/jaman/leetcodejava/easy/TwoSumTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ public class TwoSumTest {
1010
public void defaultTest() {
1111
assertArrayEquals(
1212
new int[]{0, 1},
13-
new TwoSum(
14-
new int[]{2, 7, 11, 15},
15-
9
16-
).solution()
13+
new TwoSum(new int[]{2, 7, 11, 15}, 9).solution()
1714
);
1815
}
1916

0 commit comments

Comments
 (0)