好久没有写博客了,最近在重新刷leetcode,发现以前自己写的相当不错的代码,再加上自己最新的一些思考,故po出来
这一题解题思路有两个,一个是排序+O(n)搜索
另外一个是Hash
Hash方法的代码如下
vector<int> twoSum(vector<int> &numbers, int target) {
map<int, int> num_index;
vector<int> res;
for (int index = 0; index < numbers.size();index++)
{
if (num_index.find(target - numbers[index]) != num_index.end())
{
res.push_back(num_index[target - numbers[index]] + 1);
res.push_back(index + 1);
return res;
}
num_index[numbers[index]] = index;
}
return res;
}注意:先找另一个数,再存入hash中
本文分享了LeetCode经典题目“两数之和”的两种解法:排序+O(n)搜索及哈希表方法。哈希表方法通过一次遍历实现,先查找后插入元素到哈希表中,效率高。
600

被折叠的 条评论
为什么被折叠?



