[LeetCode] Two Sum
http://oj.leetcode.com/problems/two-sum/
这道题如果第二层循环用二分, 那么时间复杂度是O(nlogn), 而我的做法是哈希表unordered_map, 幸好LeetCode支持C++11.
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int> &numbers, int target) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 unordered_map<int, int> m; 7 for (unsigned int i = 0; i < numbers.size(); ++i) { 8 m[numbers[i]] = i; 9 } 10 vector<int> re; 11 for (unsigned int i = 0; i < numbers.size(); ++i) { 12 unordered_map<int, int>::iterator index; 13 if ((index = m.find(target - numbers[i])) != m.end()) { 14 re.push_back(i + 1); 15 re.push_back(index->second + 1); 16 break; 17 } 18 } 19 return re; 20 } 21 };
浙公网安备 33010602011771号