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
39
40
41
42
43
44
45
46
47
// @Title: 两数之和 (Two Sum)
// @Author: 15816537946@163.com
// @Date: 2020-07-01 16:04:26
// @Runtime: 4 ms
// @Memory: 3.8 MB
/*
 * @lc app=leetcode.cn id=1 lang=golang
 *
 * [1] 两数之和
 *
 * https://leetcode-cn.com/problems/two-sum/description/
 *
 * algorithms
 * Easy (46.59%)
 * Likes:    6281
 * Dislikes: 0
 * Total Accepted:    554.4K
 * Total Submissions: 1.2M
 * Testcase Example:  '[2,7,11,15]\n9'
 *
 * 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
 *
 * 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
 *
 * 示例:
 *
 * 给定 nums = [2, 7, 11, 15], target = 9
 *
 * 因为 nums[0] + nums[1] = 2 + 7 = 9
 * 所以返回 [0, 1]
 *
 *
 */

func twoSum(nums []int, target int) []int {
	if len(nums) <= 1 {
		return nil
	}
	record := make(map[int]int)
	for i, v := range nums {
		if j, ok := record[target-v]; ok {
			return []int{j, i}
		}
		record[v] = i
	}
	return nil
}