leetcode 1.两数之和
有两种思路:
- 使用暴力遍历, 复杂度的是 O(n ^2)
1 |
|
- 使用哈希表,是O(n)
使用哈希表需要注意的是, 这里需要判断idx 和idx2 不相同,因为是要找两个位置,不能取同一个位置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func twoSum(nums []int, target int) []int {
maps := make(map[int]int, len(nums))
for idx, num := range nums {
maps[num] = idx
}
for idx, num := range nums {
if idx2, ok := maps[target-num]; ok && idx != idx2 { // 00 : 04 : 10 使用哈希表,需要注意的是,有可能使用了同一个idx
return []int{idx, idx2}
}
}
return []int{}
}
leetcode 1.两数之和
https://leiqi.top/2024-08-21-64c0a1f316e6.html