## 题目地址 https://leetcode-cn.com/problems/two-sum/ ## 思路 ## 一般解法 代码: ```C++ ``` ## 优化解法 ```C++ class Solution { public: vector twoSum(vector& 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 twoSum(vector& nums, int target) { std::map 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[nums[i]] = i; } return {}; } }; ``` ``` class Solution { public: vector twoSum(vector& nums, int target) { std::unordered_map 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 {}; } }; ``` ## 代码 ```C++ ```