早教吧作业答案频道 -->数学-->
一个无序数组,任意两个数相加等于一个给定的数,并且用复杂度最小的方法得出
题目详情
一个无序数组,任意两个数相加等于一个给定的数,并且用复杂度最小的方法得出
▼优质解答
答案和解析
1.最简单的方法就是穷举,这种虽然简单,但是非常不划算,时间复杂度达到O(N^2)
2.可以换一个角度考虑,给定的数如果是M,那么针对数组中一个数字N,我们只需要查找一下数
组中是否含有M-N就可以了,这样就转换为数组查找问题了,然后可以利用空间换时间来搞
定,搞一个hash表,然后把每一个都映射到hash表中去,然后查找的时候就需要O(1)就可以
了,只不过空间复杂度达到O(N)
3.可以先排序一下,使用快排,时间复杂度为O(NlogN),然后令i = 0,j = n - 1,计算sum = arr[i]
+ arr[j],如果sum大于M就让j = j - 1,否则让i = i + 1,这样一轮下来就可以了,时间复杂度
O(N),总的时间复杂度为O(NlogN)
2.可以换一个角度考虑,给定的数如果是M,那么针对数组中一个数字N,我们只需要查找一下数
组中是否含有M-N就可以了,这样就转换为数组查找问题了,然后可以利用空间换时间来搞
定,搞一个hash表,然后把每一个都映射到hash表中去,然后查找的时候就需要O(1)就可以
了,只不过空间复杂度达到O(N)
3.可以先排序一下,使用快排,时间复杂度为O(NlogN),然后令i = 0,j = n - 1,计算sum = arr[i]
+ arr[j],如果sum大于M就让j = j - 1,否则让i = i + 1,这样一轮下来就可以了,时间复杂度
O(N),总的时间复杂度为O(NlogN)
看了一个无序数组,任意两个数相加等...的网友还看了以下:
用1000T含氧化铁80%的赤铁矿石,理论上可以炼出含铁96%的生铁的质量是多少?我设的是理论上可 2020-04-23 …
怎样在excel表中用公式设置个人所得税税率公式设置后只用得出税率即可,不用计算速算扣除数等.就是 2020-05-16 …
一道判断病句的题目下面几个句子没有语病的是()A、经过阿富汗和伊拉克两次战争,美国得出无需依靠大型 2020-06-21 …
齐次方程组为什么系数行列式的D=0就是非零解的充要条件?我的理解D=0不是只能得出无解和无穷解吗? 2020-06-23 …
以“绝句”开头,把下面的长句改成几个短句。注意不得改变句子的原意,语句要连贯通顺。王维把绝句这种最 2020-06-27 …
关于圆周率,是怎么算出来的啊?我实在想不通,还有世界上怎么会算得出无限不循环小数呢?那个,圆的周长 2020-06-27 …
他精明能干,令我们不得不肃然起敬.这句话中的“肃然起敬”用得有无错误? 2020-06-27 …
除法不能得出无限不循环小数吗?那比如2÷47呢? 2020-07-17 …
9月22日世界无车日,假设你是李华.外国笔友John对你所在的成都市交通状况很感兴趣.用英语写一封信 2020-11-14 …
以“王维”为开头,重组下面的句子,不得改变原意。(6分)绝句是一种最能展示人的性情、气质、素养和才思 2020-11-15 …