问题入口
遍历一遍哈希表: O(n)
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> numMap;for (int i = 0; i < nums.size(); i++){int complement = target - nums[i];if(numMap.count(complement) && numMap[complement] != i)return{i, numMap[complement]};numMap[nums[i]] = i;}return {};}
};
遍历两边遍哈希表: O(n)
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> numMap;int n = nums.size();// Build the hash tablefor (int i = 0; i < n; i++) {numMap[nums[i]] = i;}// Find the complementfor (int i = 0; i < n; i++) {int complement = target - nums[i];if (numMap.count(complement) && numMap[complement] != i) {return {i, numMap[complement]};}}
};
穷举法: O(n^2)
class Solution {
public:vector<int> twoSum(vector<int>& 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 vector<int>{i, j};}}return vector<int>{};}
};