aks*_*hay 4 algorithm array-algorithms
给定一个排序的整数数组,我们怎样才能找到一对总和为K的整数?
例如array = 1,3,5,6,0
,K = 6
答案是1和5.
应尽量减少时间复杂性.
你可能想看看这篇博文:
http://www.codingatwork.com/2011/07/array-sum/
我的方法是对列表进行二进制搜索K/2
,然后a
向左走一个变量,b
向右走另一个变量,试图找到解决方案a+b=K
.
我们的想法是a
从小于或等于的最大数字K/2
开始b
,从最小的数字开始a
.再次,使用二进制搜索来查找a
并b
成为数组中的下一个元素.然后
a+b = K
,那么return (a,b)
.a+b < K
,那么移动b
到正确的一个位置.a+b > K
,则a
向左移动一个位置.当然,你可以跳过二进制搜索,只是从a
数组的开头和数组b
的末尾开始,然后再做
a+b = K
,那么return (a,b)
.a+b < K
,那么移动a
到正确的一个位置.a+b > K
,则b
向左移动一个位置.这可能更快.