-
要求
将给定数组中的任意两个数的和为target,则将这两个数的下标返回
-
代码
方法1:暴力法进行遍历
执行用时 : 208 ms
内存消耗 : 9.4 MBclass Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int size = nums.size(); vector<int>ans; for(int i = 0; i < size; ++i) { int tmp = target - nums[i]; for(int j = i+1; j < size; ++j) { if(nums[j] == tmp){ ans.push_back(i); ans.push_back(j); break; } } } return ans; } };
方法2:Hash
执行用时 : 28 ms
内存消耗 : 10.8 MB
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int size = nums.size();
map<int,int> mp;
int temp;
vector<int>ans;
for(int i = 0; i < size; ++i){
temp = target - nums[i];
if(mp.find(temp) != mp.end()){
ans.push_back(mp[temp]);
ans.push_back(i);
}
else{
mp[nums[i]] = i;
}
}
return ans;
}
};