lc1

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 };
知识兔
计算机