0001_two_sum

说明:

这里有一个坑,题目中容易误解为不存在相同的元素。这里如果数组中存在相同的元素也是可以的。

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         map<int, vector<int>> m;
 5         vector<int> res;
 6         for (int i = 0; i < nums.size(); ++ i) {
 7             m[nums[i]].push_back(i);
 8          }
 9          for (int i = 0; i < nums.size(); ++ i) {
10             if (nums[i] * 2 == target) {
11                 if (m[nums[i]].size() == 2) {
12                     res.push_back(m[nums[i]][0]);
13                     res.push_back(m[nums[i]][1]);
14                     break;
15                 }
16             }
17              else if (m.find(target - nums[i]) != m.end()) {
18                  res.push_back(i);
19                  res.push_back(m[target-nums[i]][0]);
20                 break;
21                  //return res;
22              }
23          }
24         return res;
25     }
26 };
 1 class Solution:
 2     def twoSum(self, nums, target):
 3         """
 4         :type nums: List[int]
 5         :type target: int
 6         :rtype: List[int]
 7         """
 8         res = []
 9         num_indices = dict()
10         for index, value in enumerate(nums):
11             if value in num_indices:
12                 num_indices[value].append(index)
13             else:
14                 num_indices[value] = [index]
15         for k, v in num_indices.items():
16             if k * 2 == target:
17                 if len(v) == 2:
18                     res.extend(v)
19                     break
20             else:
21                 if target - k in num_indices:
22                     res.append(v[0])
23                     res.append(num_indices[target - k][0])
24                     break
25         return res

 

posted on 2017-10-25 00:16  shadowwalker9  阅读(119)  评论(0编辑  收藏  举报

导航