本文共 782 字,大约阅读时间需要 2 分钟。
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素.
使用查找表来解决。因为题中说明:你可以假设每种输入只会对应一个答案。
设置一个 map 容器nums_Map,nums_Map存储的数据类型为<int,int>,第一个元素是nums数组中的值,第二个元素是该值在数组中的下标。如上图示例中 nums_Map.insert( make_pair(2,1) );即向容器中插入第一个元素2,2在数组中的下标为1。
首先遍历数组 nums。每次遍历时查找 target-nums[i]的值是否在nums_Map中,如果在,那么就找到了答案,返回两者的下标。如果未找到,则向nums_Map插入该元素与下标 i。
class Solution {public: vector twoSum(vector & nums, int target) { mapnumsMap;//存储nums中元素及下标的容器 vector ret_V;//返回的答案 map ::iterator it; int size = nums.size(); for(int i=0;i second);//第一元素下标 ret_V.push_back(i);//该元素下标 break;//跳出 } } return ret_V;//返回答案 }};
转载地址:http://tiql.baihongyu.com/