from leetcode
思路:两个循环,外循环遍历,内循环查找 target-nums[ i ]。 改进:查找的过程可以用hash表优化。
细节:①“假设每种输入只会对应一个答案” => 不用考虑多个答案的情况; ②“不能重复利用同样元素” => 每个元素用一次 => (内循环的时候直接从 i 后面开始就行) 或(hash表查询时添加不等条件)
Solution {
2 public:
3 vector<int> twoSum(vector<int>& nums, int target) {
4 vector<int>res;
5 unordered_map<int,int>m;
6 for(int i=1;i<=nums.size()-1;i++){
7 m[nums[i]]=i;
8 }
9 for(int i=1;i<=nums.size()-1;i++){
10 int k=target-nums[i];
11 if(m.count(k)&&m[k]!=i){ //②
12 res.push_back(i);
13 res.push_back(nums[k]);
14 }
15 }
16 return res;
17 }
18 };
知识兔