1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

 

复制代码
 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         vector<int> res;
 5         for (auto p = nums.begin(); p != nums.end(); p++)
 6         {
 7             int q = target - *p;
 8             auto beg = p + 1;
 9             if (beg != nums.end())
10             {
11                 for (auto it = find(beg, nums.end(), q); it != nums.end(); it++)
12                 {
13                     int index1 = &*it - &nums[0];
14                     int index2 = &*p - &nums[0];
15                     res.push_back(index2);
16                     res.push_back(index1);
17                     break;
18                 }
19             }
20         }
21         return res;
22     }
23     vector<int> twoSum1(vector<int>& nums, int target) {
24         map<int, int> mp;
25         for (const auto& p : nums)
26         {
27             auto iter = mp.find(target - p);
28             int index = &p - &nums[0];
29             if (iter != mp.end())
30             {
31                 return { iter->second, index };
32             }
33             mp[p] = index;
34         }
35         return {};
36     }
37     vector<int> twoSum(vector<int>& nums, int target) {
38         std::unordered_map <int, int> map;
39         for (int i = 0; i < nums.size(); i++) {
40             // 遍历当前元素,并在map中寻找是否有匹配的key
41             auto iter = map.find(target - nums[i]);
42             if (iter != map.end()) {
43                 return { iter->second, i };
44             }
45             // 如果没找到匹配对,就把访问过的元素和下标加入到map中
46             map.insert(pair<int, int>(nums[i], i));
47         }
48         return {};
49     }
50 };
复制代码

 

posted @   xiazichengxi  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示
主题色彩