两数之和
This commit is contained in:
30
Hash/liangshuzhihe/main.go
Normal file
30
Hash/liangshuzhihe/main.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println(twoSum([]int{3, 3}, 6))
|
||||||
|
}
|
||||||
|
|
||||||
|
func twoSum(nums []int, target int) []int {
|
||||||
|
hash := make(map[int][]int)
|
||||||
|
for i := 0; i < len(nums); i++ {
|
||||||
|
hash[nums[i]] = append(hash[nums[i]], i)
|
||||||
|
}
|
||||||
|
fmt.Println(hash)
|
||||||
|
var result []int
|
||||||
|
for k, v := range hash {
|
||||||
|
if k == target/2 && len(v) > 1 {
|
||||||
|
result = append(result, v...)
|
||||||
|
return result
|
||||||
|
} else if k == target/2 && len(v) == 1 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if val, ok := hash[target-k]; ok {
|
||||||
|
result = append(result, v[0])
|
||||||
|
result = append(result, val[0])
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user