【LeetCode】1. Two Sum

传送门:https://leetcode.com/problems/two-sum/description/

 

解析:完全不需要两重循环,直接O(n)即可。我们这里利用到了map,当遍历到当前数字x时,我们就只需要寻找target-x即可,此时记下x的位置,那么当我们遍历到target-x时,m[target-x]不为0时,就可以得到拼成target的两个数字。

 

func twoSum(nums []int, target int) []int {
	if len(nums) < 2 {
		return nil
	}
	m := make(map[int]int, len(nums))
	fmt.Println(m)
	for i, v := range nums {
		if j, ok := m[v]; ok {
			return []int{j, i}
		} else {
			m[target-v] = i
		}
	}
	return nil
}

 

posted on 2018-01-30 16:59  小问号???  阅读(90)  评论(0)    收藏  举报

导航