We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 58ad6dc commit f3f5d84Copy full SHA for f3f5d84
two-sum/invidam.go
@@ -1,31 +1,10 @@
1
-type NumAndIdx struct {
2
- Num int
3
- Idx int
4
-}
5
-
6
func twoSum(nums []int, target int) []int {
7
- numAndIdxs := make([]NumAndIdx, 0, len(nums))
+ need := make(map[int]int, len(nums))
8
for i, n := range nums {
9
- numAndIdxs = append(numAndIdxs, NumAndIdx{Num: n, Idx: i})
10
- }
11
12
- sort.Slice(numAndIdxs, func(i, j int) bool {
13
- return numAndIdxs[i].Num < numAndIdxs[j].Num
14
- })
15
16
- ldx, rdx := 0, len(numAndIdxs)-1
17
18
- for ldx < rdx {
19
- l := numAndIdxs[ldx]
20
- r := numAndIdxs[rdx]
21
- if sum := l.Num + r.Num; sum > target {
22
- rdx--
23
- } else if sum < target {
24
- ldx++
25
- } else {
26
- return []int{l.Idx, r.Idx}
+ if j, ok := need[n]; ok {
+ return []int{i, j}
27
}
+ need[target-n] = i
28
29
30
return nil
31
0 commit comments