方法一
思路:使用map保存之前遍历的数,其中key是之前遍历过的数,val为之前遍历过的数的下标
func twoSum(nums []int, target int) []int {hmap := make(map[int]int)for i := 0; i < len(nums); i++ {//如果目标值减去当前的值出现在map中就返回if index, ok := hmap[target-nums[i]]; ok {return []int{index, i}}hmap[nums[i]] = i}return []int{}}
C++:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//新建一个map
map<int, int> hmap;
//遍历所有的nums
for(int i = 0; i < nums.size(); i++) {
//如果目标减去当前数在hmap中
if(hmap.find(target-nums[i]) != hmap.end())
{
return {hmap[target-nums[i]], i};
}
hmap[nums[i]] = i;
}
//找不到直接返回空
return {};
}
};
