在数组中找出一对数字,让数字之和等于某个固定的数
作者:
张俊凯 | 来源:发表于
2019-07-18 11:34 被阅读0次
- 示例: [3,7,2,9], 找出和为9的(7,2),返回下标集合{1,2}
- 思路:既然要找的结果是下标,就让下标成为value,建立一个map,遍历数组,让map的key为元素,下标为value,这样可以以最快的速度获取到。再次遍历数组,拿出第一个元素3,9-3=6,根据6去map找有没有结果(没有),继续下一轮循环,拿出7,9-7=2,根据2去map查找下标(index = 2),比较当前索引(1)和找到的下标(2),排序{1,2},程序结束。
- 代码 (C++ version)
vector<int> twoSum(vector<int>&nums, int target) {
vector<int> result;
unordered_map<int, int> map;
for(int i=0; i<nums.size(); i++){
map[nums[i]] = i;
}
for(int i=0; i<nums.size(); i++){
int rest = target - nums[i];
if(map.find(rest) != map.end()){
int index = map[rest];
if(index == i)//有可能自身是目标的一半 排除掉
continue;
if(index < i){
result = {index, i};
}else{
result = {i, index};
}
return result;
}//end for if
}//end for loop
}
本文标题:在数组中找出一对数字,让数字之和等于某个固定的数
本文链接:https://www.haomeiwen.com/subject/nhiklctx.html
网友评论