先给题 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 来源:力扣(LeetCode)
1.暴力破解这个就不解释了,直接上代码。 1 vector<int> twoSum(vector<int>& nums, int target) { 2 for(int i = 0; i < nums.size() - 1; i++) 3 for(int j = i + 1; j < nums.size(); j++) 4 if(nums[i] + nums[j] == target) 5 return {i,j}; 6 return {}; 7 } 2.哈希
1 class Solution { 2 public: 3 vector<int> twoSum(vector<int>& nums, int target) { 4 unordered_map<int, int> hashtable; 5 for (int i = 0; i < nums.size(); ++i) { 6 auto it = hashtable.find(target - nums[i]); 7 if (it != hashtable.end()) { 8 return {it->second, i}; 9 } 10 hashtable[nums[i]] = i; 11 } 12 return {}; 13 } 14 };
来源于https:///problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/ |
|