问题:
求一个数组中的两个数,使这两个数的和等于某个指定的数。
解析:
可以借助于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 }