leetcode two Sum【数组】
题目链接:https://leetcode.com/problems/two-sum/
1 /*题意:在数组中找出两个数的和等于target,输出下标*/ 2 3 /*思路: 4 *将键值<value,index>存入map中,接着扫描数组,检查target与当前数的差值是否在map中 5 *如果存在,返回结果 6 *如果不存在,将当前数存入map中 7 * 8 *时间复杂度O(n):遍历一次数组 9 *空间复杂度O(n): 10 */ 11 12 /*如果不要求有序的话,选unorderer_map较好*/ 13 14 15 class Solution { 16 public: 17 vector<int> twoSum(vector<int> &numbers, int target) { 18 vector<int> ans; 19 unordered_map<int,int> mp; 20 int Size = numbers.size(); 21 for(int i = 0; i < Size; i ++){ 22 if(mp.find(target-numbers[i]) != mp.end()){ 23 ans.push_back(mp[target-numbers[i]]+1); 24 ans.push_back(i+1); 25 break; 26 } 27 if(mp.find(numbers[i]) == mp.end()) mp[numbers[i]] = i; 28 } 29 return ans; 30 } 31 };