在一长度为 N 的有序数列中寻找两个数,使得两数之和等于某指定值的最快的算法的平均时间复杂度是 ()
int getSumNum(int[] arr,int Sum), //arr为数组,Sum为和 { int i,j; for(i = 0, j = n-1; i < j ; ) { if(arr[i] + arr[j] == Sum) return ( i , j ); else if(arr[i] + arr[j] < Sum) i++; else j--; } return ( -1 , -1 ); }
target = set() for i in data: if i in target: print(i,sum-i) else: target.add(sum-i) print("not find")
left =0
right=length- 1
If left-value + right-value > target:
Right = left + (right-left)/2
Set(Right-Value)
Else if left-value + right-value == target:
Return
else:
Left = left + (right-left)/2
Set(Left-value)