如何实现O(n)的2-sum

来源:互联网 发布:网络直播合作协议 编辑:程序博客网 时间:2024/05/07 11:43

2-sum问题 实现找数组中的二元数组(a,b)(a+b=0)

方法一:

循环 O(n2)

方法二:二分查找:

for(int i =0 ; i < n; i++){
Binary_Search(-a[i]);

}

结果 O(nlogn)

方法三:牺牲空间换取时间 基数排序算法

比如10^8内的整数

a[10^8]=0或者1

如果是1的话,代表在,如果是0,代表不存在

遇到一个数字的时候,在数组中比较是否存,就可以实现O(1)

for(int i =0 ; i<n ;i++){
if(a[i] == 1) 存在;

else 不存在;

}




0 0
原创粉丝点击