Skip to content

Commit f3f5d84

Browse files
committed
two-sum: map version
1 parent 58ad6dc commit f3f5d84

File tree

1 file changed

+4
-25
lines changed

1 file changed

+4
-25
lines changed

two-sum/invidam.go

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,10 @@
1-
type NumAndIdx struct {
2-
Num int
3-
Idx int
4-
}
5-
61
func twoSum(nums []int, target int) []int {
7-
numAndIdxs := make([]NumAndIdx, 0, len(nums))
2+
need := make(map[int]int, len(nums))
83
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}
4+
if j, ok := need[n]; ok {
5+
return []int{i, j}
276
}
7+
need[target-n] = i
288
}
29-
309
return nil
3110
}

0 commit comments

Comments
 (0)