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

本文探讨了2-Sum问题的三种解决方案:O(n²)的循环法、O(nlogn)的二分查找法及O(1)的基数排序算法。通过不同算法对比,帮助读者理解各种方法的特点及适用场景。

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 不存在;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值