比较容易想到的有三种解法
- BF
- map+两遍扫描
- map+一遍扫描
都比较简单,这里给出第三种解法的代码实现
Java
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(target - nums[i])) {
return new int[]{i, map.get(target - nums[i])};
} else {
map.put(nums[i], i);
}
}
return null;
}
}
golang
func twoSum(nums []int, target int) []int {
myMap:=make(map[int]int)
for i,v := range nums{
value,ok:=myMap[target-v]
if ok{
return []int{i,value}
}
myMap[v]=i;
}
return []int{};
}