本文主要是介绍LeetCode 01 Two Sums,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LeetCode的学习笔记:001
题目描述:
1.第一个解决办法就是两层循环求和,时间复杂度达到了O(n^2),按题目所给范例运行时间是68ms。
leetcode所给的代码模板和OJ不同。LeetCode所给的是一个Solution类,需要在这个类下写出问题解决的函数。
C++模板给出的函数是
vector<int> twoSum(vector<int>& nums, int target) {}
2.第二个方法,是网上大神用的方法,是采用哈希表。使用哈希表可以达到O(N)的时间复杂度。但是要用到map。
3.因为所给范例数组是无序的,所以可以考虑先用排序函数将这个数组排序。然后利用前后两个遍历指针。
static int a[2] = {0};//需要返回的参数数组
if(nums[i]+nums[j]== target)//说明找到了
{a[0] = i;a[1] = j;return a;
}
else if(nums[i]+nums[j]>target)
{j--;
}
else if(nums[i]+nums[j]< target)
{i++;
}
先用快速排序将nums排序,时间复杂度为O(nlogn),遍历为O(n),所以时间复杂度为O(nlogn);
本题涉及到的知识点:
1.如果需要返回多个参数,可以使用数组来存储需要返回的多个参数。但是定义数组时必须使用关键字static
static int a[];
2.Vector(容器):
3.Map():
这篇关于LeetCode 01 Two Sums的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!