LeetCode-1 Two Sum
2016-06-03 23:46
417 查看
https://leetcode.com/problems/two-sum/
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
1、直接扫描数组两次(880ms)
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);
break;
}
}
}
return result;
}
};
2、hash表(28ms)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> map0;
int len = nums.size();
for(int i = 0;i<len;i++){
map0.insert(pair <int,int>(nums[i],i));
}
for(int i = 0;i<len;i++){
int complement = target - nums[i];
if(map0.find(complement) != map0.end() && map0[complement] != i){
result.push_back(i);
result.push_back(map0[complement]);
break;
}
}
return result;
}
};
3、hash表,扫描一次(20ms)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> map0;
int len = nums.size();
for(int i = 0;i<len;i++){
int complement = target - nums[i];
if(map0.find(complement) != map0.end() && map0[complement] != i){//查找已经在map中的数是否满足条件
result.push_back(map0[complement]);
result.push_back(i);
break;
}
map0.insert(pair <int,int>(nums[i],i));
}
return result;
}
};
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
1、直接扫描数组两次(880ms)
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);
break;
}
}
}
return result;
}
};
2、hash表(28ms)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> map0;
int len = nums.size();
for(int i = 0;i<len;i++){
map0.insert(pair <int,int>(nums[i],i));
}
for(int i = 0;i<len;i++){
int complement = target - nums[i];
if(map0.find(complement) != map0.end() && map0[complement] != i){
result.push_back(i);
result.push_back(map0[complement]);
break;
}
}
return result;
}
};
3、hash表,扫描一次(20ms)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> map0;
int len = nums.size();
for(int i = 0;i<len;i++){
int complement = target - nums[i];
if(map0.find(complement) != map0.end() && map0[complement] != i){//查找已经在map中的数是否满足条件
result.push_back(map0[complement]);
result.push_back(i);
break;
}
map0.insert(pair <int,int>(nums[i],i));
}
return result;
}
};
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解