LeetCode题目一 两数之和 #include<iostream> #include<vector> #include<unordered_map> using namespace std; vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; for (int i = 0; i < nums.size(); i++){ for (int j = i + 1; j < nums.size(); j++) { if (nums[i]+nums[j] == target) { res.push_back(i); res.push_back(j); } } } return res; } vector<int> twoSumHash(vector<int>& nums, int target) { vector<int> res; unordered_map<int, int> map; for (int i = 0; i < nums.size(); i++) { map[nums[i]] = i; } for (int i = 0; i < nums.size(); i++) { if ((map.find(target - nums[i]) != map.end()) && (map[target - nums[i]] != i)) { res.push_back(i); res.push_back(map[target - nums[i]]); return res; } } } int main() { vector<int> nums; vector<int> res; nums.push_back(2); nums.push_back(7); nums.push_back(11); nums.push_back(15); int target = 9; //cout << nums.size()<< endl; //res = twoSum(nums, target); res = twoSumHash(nums, target); for (int i = 0; i < res.size(); i++) { cout << res[i]; cout << " "; } return 0; }