leetcode1 two sum
2015-05-13 11:24
162 查看
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
// sort(numbers.begin,numbers.end);
vector<int> results;
vector<int>::size_type i;
multimap<int,int>map1;
for( i=0;i<numbers.size();i++)
{
map1.insert(make_pair(numbers[i],i+1));
//map1[numbers[i]]=i+1;
}
for(multimap<int,int>::iterator iter=map1.begin();iter!=map1.end();iter++)
// for( i=0;i<numbers.size();i++)
{
//if(map1.count(target-numbers[i]))
if(map1.count(target-iter->first))
{
multimap<int,int>::iterator iter1=map1.find(target-iter->first);
if(iter1==iter) iter1++;
if(iter->second<iter1->second)
{
// results.push_back(i+1);
results.push_back(iter->second);
results.push_back(iter1->second);
}
else
{
results.push_back(iter1->second);
results.push_back(iter->second);
// results.push_back(i+1);
}
break;
}
}
return results;
}
};
此题用map做比较快,但是考虑到重复的情况必须用multimap; 注意multimap的iterator只能自增。
public:
vector<int> twoSum(vector<int> &numbers, int target) {
// sort(numbers.begin,numbers.end);
vector<int> results;
vector<int>::size_type i;
multimap<int,int>map1;
for( i=0;i<numbers.size();i++)
{
map1.insert(make_pair(numbers[i],i+1));
//map1[numbers[i]]=i+1;
}
for(multimap<int,int>::iterator iter=map1.begin();iter!=map1.end();iter++)
// for( i=0;i<numbers.size();i++)
{
//if(map1.count(target-numbers[i]))
if(map1.count(target-iter->first))
{
multimap<int,int>::iterator iter1=map1.find(target-iter->first);
if(iter1==iter) iter1++;
if(iter->second<iter1->second)
{
// results.push_back(i+1);
results.push_back(iter->second);
results.push_back(iter1->second);
}
else
{
results.push_back(iter1->second);
results.push_back(iter->second);
// results.push_back(i+1);
}
break;
}
}
return results;
}
};
此题用map做比较快,但是考虑到重复的情况必须用multimap; 注意multimap的iterator只能自增。
相关文章推荐
- [leetcode 1] Two Sum
- Leetcode-Two Sum
- LeetCode || Two Sum
- LeetCode 1 Two Sum
- LeetCode-Easy部分标签为HashTable 1. Two Sum(一种战胜95%的提交版本的算法)
- LeetCode算法问题9 —— Two Sum
- LeetCode【第1题】Two Sum
- 算法分析与设计丨第一周丨 LeetCode(1)——Two Sum
- LeetCode-Two Sum
- leetcode之Two Sum
- LeetCode-Two Sum
- leetcode:1. Two Sum
- [LeetCode]Two Sum
- leetcode 1:two sum
- LeetCode---1. Two Sum
- 刷题的日常[Leetcode]——1)Two Sum
- leetcode-- two sum
- [LeetCode] Two Sum
- leetcode - 1.Two Sum
- [leetcode-1] Two sum