两数之和【简单】
哈哈哈哈哈第一题就不会做,新手小白了属于是
连vector的长度怎么表示都不记得了,真的是。。
int n = nums.size();
这道题有暴力枚举法和更快速度的方法
方法一 暴力枚举
class Solution{
public:
vector<int> twoSum(vector<int>&nums,int target){
for(int i=0;i < nums.size();++i){
for(int j=i+1;j<n;++j){
if(nums[i]+nums[j]==target){
return {i,j};
}
}
}
}
};
方法二 哈希表
vector<int> twoSum(vector<int>& nums, int target){
unordered_map<int,int> hashtable;
for(int i=0;i<nums.size();++i){
auto it = hashtable.find(target-nums[i]);
if(it != hashtable.end()){
return {it->second,i};
}
hashtable[nums[i]]=i;
}
return {};
}
使用哈希表可以让寻找target-x的时间复杂度降低到O(1)