最简单的思想,遍历,
1、两层循环,自己写的,没有用STL,时间花费较长
1 vector<int> twoSum(vector<int>& nums, int target) { 2 vector<int> result; 3 for(int i=0;i<nums.size();i++){ 4 int temp = target-nums[i]; 5 for(int j=i+1;j<nums.size();j++){ 6 if(temp==nums[j]){ 7 result.push_back(i); 8 result.push_back(j); 9 return result; 10 } 11 } 12 } 13 return {0, 0}; 14 }
2、使用Map先插入元素,再对map内的元素进行搜索
1 vector<int> twoSum(vector<int>& nums, int target) { 2 unordered_map<int, int> map; 3 4 for (int i = 0; i < nums.size(); i ++) { 5 auto it = map.find(target - nums[i]); 6 7 if (it != map.end()) { 8 return { i, it->second }; 9 } 10 11 map[nums[i]] = i; 12 } 13 14 return { 0, 0 }; 15 }