1. Two Sum【easy】

1. Two Sum【easy】

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

解法一:

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         unordered_map<int, int> u_map;
 5         vector<int> result;
 6         
 7         for (int i = 0; i < nums.size(); ++i)
 8         {
 9             if (u_map.find(target - nums[i]) != u_map.end())
10             {
11                 result.push_back(u_map[target - nums[i]]);
12                 result.push_back(i);
13                 return result;
14             }
15             
16             u_map.insert(make_pair(nums[i], i));
17         }
18                                  
19         return result;
20     }
21 };

map搞一把

解法二:

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         unordered_map<int, int> map;
 5         int n = (int)nums.size();
 6         for (int i = 0; i < n; i++) {
 7             auto p = map.find(target - nums[i]);
 8             if (p != map.end()) {
 9                 return {p->second, i};
10             }
11             map[nums[i]] = i;
12         }
13     }
14 };

比较简洁的写法

扩展见:

167. Two Sum II - Input array is sorted【easy】

170. Two Sum III - Data structure design【easy】


原文地址:https://www.cnblogs.com/abc-begin/p/7536110.html