two sum

问题:

  求一个数组中的两个数,使这两个数的和等于某个指定的数。

解析:

  可以借助于hash表降低时间复杂度。

代码:

 1 #include <vector>
 2 #include <unordered_map>
 3 using namespace std;
 4 
 5 vector<int> twoSum(vector<int>& nums, int target) 
 6 {
 7     unordered_map<int, int> m;
 8     vector<int> res;
 9     for (int i = 0; i < nums.size(); ++i) {
10         m[nums[i]] = i;
11     }
12     for (int i = 0; i < nums.size(); ++i) {
13         int t = target - nums[i];
14         if (m.count(t) && m[t] != i) {
15             res.push_back(i);
16             res.push_back(m[t]);
17             break;
18         }
19     }
20     return res;
21 }
原文地址:https://www.cnblogs.com/wanmeishenghuo/p/13492652.html