class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> c;
for(int i=0;i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{
c={i,j};
}
else
continue;
}
}
return c;
}
};
以上为初始解法,暴力破解
利用两次循环依次相加得到最终结果。
class Solution {
public:
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]);//寻找这个key值
if (it != hashtable.end()) {//如果it存在于hashtable里面
return {it->second, i};//it->second指的是it的value即nums的下标
}
hashtable[nums[i]] = i;
}
return {};
}
};
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
此方法是利用unordered_map进行的,unordered_map的特性是利用哈希表但是他不允许有重复的key存在.
他的每一个元素都是以key-value对应存在的
unordered_map的find函数会返回一个指针指向查找的key的本身