最近觉得自己很渣,所以在这里立下flag,从今天开始每天刷一道leetcode上的题目,并且在这里进行代码整理,闲话少说,进入正题:
一、Two sum
题目要求:
我的答案:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash;
vector<int> result;
for (int i = 0; i < nums.size(); i++) {
int numberToFind = target - nums[i];
if (hash.find(numberToFind) != hash.end()) {
result.push_back(hash[numberToFind]);
result.push_back(i);
return result;
}
hash[nums[i]] = i;
}
return result;
}
思路解析:
这个题目还是参考了别人的答案的,因为自己没想到好的办法。具体思路就是用目标数据target减去数组nums中第i个数据得到值numbertofind,然后在hash中寻找numbertofind,若能找到,则把i与numbertofind的下表按大小顺序输出,程序结束,若找不到,则把第i个数据与其下标压入hash,然后遍历第i+1个数据,直到找多正确的组合或者遍历完所有的数据,程序退出。
假如这里要求是三个不同的数据相加得到target,这种办法将不再适用。