【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
}
浙公网安备 33010602011771号