方法一

思路:使用map保存之前遍历的数,其中key是之前遍历过的数,val为之前遍历过的数的下标

  1. func twoSum(nums []int, target int) []int {
  2. hmap := make(map[int]int)
  3. for i := 0; i < len(nums); i++ {
  4. //如果目标值减去当前的值出现在map中就返回
  5. if index, ok := hmap[target-nums[i]]; ok {
  6. return []int{index, i}
  7. }
  8. hmap[nums[i]] = i
  9. }
  10. return []int{}
  11. }

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 {};
    }
};