最近的一次算法面试中遇到的题目:
N个数中,找两个数,他们的和为M。
最简单的做法是HASH,统计所有的数出现的个数,没有出现的个数为0,这样遍历前m个数,第i个值用a[i]表示,那么另一个数M-a[i],如果该项在hash表中那当然就找到了!
如果N个数非常大,普通hash肯定不行,注意到我们只访问了前M个数,所以实际上只要前M个hash表,值大于M的,完全不用记录在表!
电话面试,其实没听太清楚~有点惋惜~~~
以上仅是hash算法,其它算法~欢迎指导~
最近的一次算法面试中遇到的题目:
N个数中,找两个数,他们的和为M。
最简单的做法是HASH,统计所有的数出现的个数,没有出现的个数为0,这样遍历前m个数,第i个值用a[i]表示,那么另一个数M-a[i],如果该项在hash表中那当然就找到了!
如果N个数非常大,普通hash肯定不行,注意到我们只访问了前M个数,所以实际上只要前M个hash表,值大于M的,完全不用记录在表!
电话面试,其实没听太清楚~有点惋惜~~~
以上仅是hash算法,其它算法~欢迎指导~