您的位置:首页 > 其它

LeetCode---Two Sum

2015-09-26 10:32 309 查看
题目大意:给出一个数组和一个目标数字,从数组中找出两个元素之和等于目标数字,最后返回这两个元素的索引。索引1必须小于索引2

算法思想:

遍历数组将数组中的元素和索引存入multimap中,然后再次遍历数组,判断target-nums[i]是否在map中,如果在则判断该索引是否和nums[i]的索引相同,如果不相同则返回这两个数的索引,反之继续遍历数组。

代码如下:

class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
multimap<int,int> intIndex;
for(int i=0;i<nums.size();++i){
intIndex.insert(make_pair(nums[i],i+1));
}

multimap<int,int>::iterator pos;
vector<int> innums;
for(int i=0;i<nums.size();++i){
int res=target-nums[i];
for(pos=intIndex.lower_bound(res);pos!=intIndex.upper_bound(res);++pos){
if(pos->second!=i+1){
innums.push_back(min(i+1,pos->second));
innums.push_back(max(i+1,pos->second));
return innums;
}

}
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: