[leetcode] 1.two sum
2018-03-24 20:50
393 查看
题目链接
解法1:O(n^2) beats 27.74%
解法2: O(nlogn) beats 52.44%
解法三:O(n) beats 98.88% 思路hash
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int delt = 49999, cnt[99999] = {0};
for(int i = 0; i < nums.size(); i++){
cnt[nums[i] + delt] = i;
}
for(int i = 0; i < nums.size(); i++){
if(cnt[target - nums[i] + delt] != 0 && cnt[target - nums[i] + delt] != i){
return vector<int> {i, cnt[target - nums[i] + delt]};
}
}
}
};
解法1:O(n^2) beats 27.74%
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> result; for(int i = 0; i < nums.size(); i++){ for(int j = i + 1; j < nums.size(); j++){ if(nums[j] == target - nums[i]){ result.push_back(i); result.push_back(j); return result; } } } } };
解法2: O(nlogn) beats 52.44%
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> result; map<int, int> cnt; for(int i = 0; i < nums.size(); i++){ cnt[nums[i]] = i; } for(int i = 0; i < nums.size(); i++){ if(cnt.count(target - nums[i]) != 0 && cnt[target - nums[i]] != i){ result.push_back(i); result.push_back((cnt.find(target - nums[i]))->second); return result; } } } };
解法三:O(n) beats 98.88% 思路hash
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int delt = 49999, cnt[99999] = {0};
for(int i = 0; i < nums.size(); i++){
cnt[nums[i] + delt] = i;
}
for(int i = 0; i < nums.size(); i++){
if(cnt[target - nums[i] + delt] != 0 && cnt[target - nums[i] + delt] != i){
return vector<int> {i, cnt[target - nums[i] + delt]};
}
}
}
};
相关文章推荐
- [leetcode]1. Two Sum
- 第五周:[leetcode] Two Sum、3Sum、3Sum Closest、4Sum
- [LeetCode]Two Sum
- Two Sum (LeetCode)
- [leetcode]1. Two Sum
- leetcode 1. Two Sum
- 数组-leetcode 1. Two Sum
- [LeetCode] Two Sum
- LeetCode--Two Sum
- 2017-09-07 LeetCode_001 Two Sum
- leetcode 刷题题解(c++) 1.Two Sum (hash表,排序+二分查找)
- [Leetcode]1 Two Sum
- LeetCode刷题Day1 Two Sum
- LeetCode 1 two sum
- LeetCode 1_Two Sum
- LeetCode-Easy部分标签为HashTable 1. Two Sum(一种战胜95%的提交版本的算法)
- Leetcode 1. Two Sum
- 【leetcode】Two Sum
- LeetCode-001 Two Sum
- LeetCode题解-1-Two Sum