1.两数之和 力扣,水题

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

 

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

坑点:题目中的一个元素不能重复使用

[3,2,4]
6

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
      vector<int> res;
      int l=nums.size();
      map<int , vector<int> > mp;
      for(int i=0;i<l;i++)
        mp[nums[i]].push_back(i);


      for(int i=0;i<l;i++)
      {
           if ( mp.find( target-nums[i] ) !=mp.end() )
            {
                if (nums[i]!=target-nums[i])
                {
                    res.push_back(i);
                    res.push_back(mp[target-nums[i]][0]);
                    break;
                } else
                if (mp[nums[i]].size()>=2)
                {
                    res.push_back(mp[nums[i]][0]);
                    res.push_back(mp[nums[i]][1]);
                    break;
                }
                else continue;
            }
            if(res.size()>0) break;
      }  
      return res;
    }
};

 

posted on 2021-06-03 15:34  Yxter  阅读(34)  评论(0编辑  收藏  举报

导航