|
1 | 1 | package g0001_0100.s0001_two_sum |
2 | 2 |
|
3 | 3 | // #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%) |
7 | 6 |
|
8 | 7 | 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) |
37 | 14 | } |
| 15 | + indexMap[numbers[i]] = i |
38 | 16 | } |
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) |
43 | 18 | } |
44 | 19 | } |
0 commit comments