68 lines
1.6 KiB
Markdown
68 lines
1.6 KiB
Markdown
## 题目地址
|
||
https://leetcode-cn.com/problems/two-sum/
|
||
|
||
## 思路
|
||
|
||
## 一般解法
|
||
|
||
代码:
|
||
|
||
```C++
|
||
```
|
||
|
||
## 优化解法
|
||
|
||
```C++
|
||
class Solution {
|
||
public:
|
||
vector<int> twoSum(vector<int>& nums, int target) {
|
||
for (int i = 0; i < nums.size(); i ++) {
|
||
for (int j = i + 1; j < nums.size(); j++) {
|
||
if (nums[i] + nums[j] == target) {
|
||
return {i, j};
|
||
}
|
||
}
|
||
}
|
||
return {};
|
||
}
|
||
};
|
||
|
||
```
|
||
|
||
```
|
||
class Solution {
|
||
public:
|
||
vector<int> twoSum(vector<int>& nums, int target) {
|
||
std::map <int,int> map;
|
||
for(int i = 0; i < nums.size(); i++) {
|
||
auto iter = map.find(target - nums[i]);
|
||
if(iter != map.end()) {
|
||
return {iter->second,i};
|
||
}
|
||
map.insert({nums, i});
|
||
}
|
||
return {};
|
||
}
|
||
};
|
||
```
|
||
|
||
```
|
||
class Solution {
|
||
public:
|
||
vector<int> twoSum(vector<int>& nums, int target) {
|
||
std::unordered_map <int,int> map;
|
||
for(int i = 0; i < nums.size(); i++) {
|
||
auto iter = map.find(target - nums[i]);
|
||
if(iter != map.end()) {
|
||
return {iter->second, i};
|
||
break;
|
||
}
|
||
map.emplace(nums[i], i);
|
||
}
|
||
return {};
|
||
}
|
||
};
|
||
```
|
||
|
||
> 更多精彩文章持续更新,可以微信搜索「 代码随想录」第一时间阅读,关注后有大量的学习资料和简历模板可以免费领取,本文 [GitHub](https://github.com/youngyangyang04/leetcode-master ):https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。
|