1.两数之和
每次想重刷算法都会从两数之和开始,地位类似于aband,没想到这次换了codetop阿里前端题库第二道又是两数之和,进行一个文艺复兴之文艺复兴,多学两个思路吧
太复古的双指针,写过超多遍
懒的编译器写了,不完整代码如下:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int>result;
for(int i=0;i<nums.size();i++){
for(int j=i+1;j<nums.size();j++){
if(nums[i]+nums[j]==target){
result.push_back(i);
result.push_back(j);
return result;
}
}
}
return result;
}
学习一下hashMap解法
呃就是也懒的写了,简单喵,搜点unordered_map吧,个人不太喜欢牺牲空间换时间的做法
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 {};
}
不知道第几次写两数之和,下一个试试三数