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

 

posted @ 2015-03-23 20:05  天丶下  阅读(125)  评论(0编辑  收藏  举报