Skip to content

Commit 9e8c568

Browse files
authored
Improved task 1.
1 parent f26211d commit 9e8c568

File tree

2 files changed

+15
-35
lines changed

2 files changed

+15
-35
lines changed
Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,19 @@
11
package g0001_0100.s0001_two_sum
22

33
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Array #Hash_Table
4-
// #Data_Structure_I_Day_2_Array #2022_03_22_Time_292_ms_(80.69%)_Space_41.6_MB_(60.71%)
5-
6-
import java.util.Arrays
4+
// #Data_Structure_I_Day_2_Array #Level_1_Day_13_Hashmap #Udemy_Arrays
5+
// #2022_07_14_Time_234_ms_(92.75%)_Space_37.5_MB_(93.77%)
76

87
class Solution {
9-
fun twoSum(nums: IntArray?, target: Int): IntArray {
10-
if (nums == null || nums.size <= 1) {
11-
return IntArray(0)
12-
}
13-
val result = IntArray(2)
14-
var left = 0
15-
var right = nums.size - 1
16-
val nums1 = Arrays.copyOf(nums, nums.size)
17-
Arrays.sort(nums1)
18-
while (left < right) {
19-
if (nums1[left] + nums1[right] == target) {
20-
break
21-
} else if (nums1[left] + nums1[right] > target) {
22-
right--
23-
} else if (nums1[left] + nums1[right] < target) {
24-
left++
25-
}
26-
}
27-
for (i in nums.indices) {
28-
if (nums1[left] == nums[i]) {
29-
result[0] = i
30-
break
31-
}
32-
}
33-
for (j in nums.indices.reversed()) {
34-
if (nums1[right] == nums[j]) {
35-
result[1] = j
36-
break
8+
fun twoSum(numbers: IntArray, target: Int): IntArray {
9+
val indexMap: MutableMap<Int, Int> = HashMap()
10+
for (i in numbers.indices) {
11+
val requiredNum = target - numbers[i]
12+
if (indexMap.containsKey(requiredNum)) {
13+
return intArrayOf(indexMap[requiredNum]!!, i)
3714
}
15+
indexMap[numbers[i]] = i
3816
}
39-
val tmp = result[0]
40-
result[0] = Math.min(result[0], result[1])
41-
result[1] = Math.max(tmp, result[1])
42-
return result
17+
return intArrayOf(-1, -1)
4318
}
4419
}

src/test/kotlin/g0001_0100/s0001_two_sum/SolutionTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,9 @@ internal class SolutionTest {
1919
fun twoSum3() {
2020
assertThat(Solution().twoSum(intArrayOf(3, 3), 6), equalTo(intArrayOf(0, 1)))
2121
}
22+
23+
@Test
24+
fun twoSum4() {
25+
assertThat(Solution().twoSum(intArrayOf(3, 3), 7), equalTo(intArrayOf(-1, -1)))
26+
}
2227
}

0 commit comments

Comments
 (0)