[1]:两数之和
题目:
https://leetcode-cn.com/problems/two-sum/description/
解题:
直接暴力过的,看了题解之后发现可以用哈希表。
一次哈希速度是最快的。
代码1:
1 2 3 4 5 6 7 8 9 10 11 12
| class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>a; for(int i = 0; i < nums.size(); ++i) for(int j = 0; j < nums.size(); ++j) if(nums[i] + nums[j] == target && i != j) a = {i, j}; return a; } };
|
代码2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { map <int, int> m; for(int i = 0; i < nums.size(); ++i) { int t = target - nums[i]; if(m.find(t) != m.end()) return {m[t], i}; else m[nums[i]] = i; } return {}; } };
|
代码3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { map <int, int> m; for(int i = 0; i < nums.size(); i++) { m[nums[i]] = i; } for(int i = 0 ; i < nums.size(); i++) { if(m.find(target - nums[i]) != m.end() && m[target - nums[i]] != i) return {i, m[target - nums[i]]}; } return {0}; } };
|