Go map解决力扣问题

WechatIMG60.jpeg

力扣问题

给定一个整数数组 arr 和一个目标值 target,在该数组中找出加和等于目标值的两个整数,并返回它们在原数组中的下标。假设,原数组中没有重复元素,而且有且只有一组答案。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import (
"fmt"
"encoding/json"
)

func twoSum(arr []int, target int) (newArr []int) {
m := make(map[int]int)
newArr = []int{0}
for i := 0; i < len(arr); i++ {
m[arr[i]] = i
complement := target - arr[i]
v, ok := m[complement]
if ok == true && v != i {
newArr = []int{v,i}
return newArr;
}
}
return newArr
}

func main() {
arr := []int{ 10, 92, 21, 83, 32, 74 }
str,err := json.Marshal(arr)
if err != nil {
panic(err)
}
fmt.Printf("原始数据:%s\n",string(str))
target := 102
fmt.Printf("目标值:%v\n",target)
newArr := twoSum(arr, target)
newStr,err := json.Marshal(newArr)
if err != nil {
panic(err)
}
fmt.Printf("数组下标:%s\n",string(newStr))
}

执行

1
2
3
4
$ go run target.go
原始数据:[10,92,21,83,32,74]
目标值:102
数组下标:[0,1]
-------------本文结束感谢您的阅读-------------
0%