标签:
这道题有三种解法:
1.暴力求解,用两层for循环,遍历所有可能的情况,时间复杂度是O(n2)
2.现将数组排序,头尾各设置一个指针,左右两边夹逼寻找,但是这道题要返回的是数的索引,所以这种方式不太合适
3.使用hash的方式,将hash的关键字设置为数组元素,关键字对应着数组元素的索引(要注意hash的关键字不能出现重复的情况)
**还要注意返回的数组索引,必须有先后顺序,即由小到大
vector<int> twoSum(vector<int>& nums, int target) { vector<int> result; unordered_map<int,int> number; for(int i=0;i<nums.size();i++) { int gap=target-nums[i]; if(number.find(gap)!=number.end()) { result.push_back(number[gap]); result.push_back(i); return result; } if(number.find(nums[i])==number.end()) number[nums[i]]=i; } return result; }
标签:
原文地址:http://www.cnblogs.com/summerkiki/p/5458268.html