1_Two Sum --LeetCode
原题如下:
思路:将nums放到一个map<int,int>中,其中,键是nums中元素,值对应其下标。然后遍历nums,取nums中一个值nums[i],接着用target减去它,最后再map中找差值map[num[i]]。如果发现差值,则返回i,map[num[i]]。
代码如下:
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 vector<int> vec; 5 map<int,int> im; 6 //将nums装进map容器中,键为vector元素,值为数组下标 7 for(int i = 0;i<nums.size();i++) 8 { 9 im[nums[i]]=i; 10 } 11 12 map<int,int>::iterator it; 13 //遍历vector作差,然后再map中寻找差值,如果命中,则记录下标 14 for(int i = 0;i<nums.size();i++) 15 { 16 int sub = target - nums[i]; 17 it = im.find(sub); 18 if(it != im.end() && it->second != i) 19 { 20 vec.push_back(i); 21 vec.push_back(it->second); 22 break; 23 } 24 } 25 return vec; 26 }
手与大脑的距离决定了理想与现实的相似度