> For the complete documentation index, see [llms.txt](https://celia-qian.gitbook.io/leetcode-notebook-2020-2021/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://celia-qian.gitbook.io/leetcode-notebook-2020-2021/linear-list/array/two-sum.md).

# Two Sum

easy 原题链接：https\://leetcode.com/problems/two-sum/

## Two Sum

原题链接：<https://leetcode.com/problems/two-sum/>

### 描述

> Given an array of integers `nums` and an integer `target`, return *indices of the two numbers such that they add up to `target`*.
>
> You may assume that each input would have ***exactly*****&#x20;one solution**, and you may not use the *same* element twice.
>
> You can return the answer in any order.

### 例子

> Input: nums = \[2,7,11,15], target = 9 Output: \[0,1]&#x20;
>
> Output: Because nums\[0] + nums\[1] == 9, we return \[0, 1].
>
> Input: nums = \[3,2,4], target = 6&#x20;
>
> Output: \[1,2]

### 约束

> * `2 <= nums.length <= 105`
> * `-109 <= nums[i] <= 109`
> * `-109 <= target <= 109`
> * **Only one valid answer exists.**

### 解法一

### 解法二

```cpp
class Solution {
public:
    vector<int> twoSum(vector<int> &nums, int target) { 
        unordered_map<int, int> mapping;
        vector<int> result;
        for (int i = 0; i < nums.size(); i++) {
            mapping[nums[i]] = i; 
        }
        for (int i = 0; i < nums.size(); i++) {
            const int gap = target - nums[i];
            if (mapping.find(gap) != mapping.end() && mapping[gap] > i) {
                result.push_back(i); 
                result.push_back(mapping[gap]); 
                break;
            } 
        }
          return result;
      }
};
```

## 总结
