读书笔记之编程之美 - 2.12 快速寻找满足条件的两个数

一般都能想到解法二,用sum – a[i]在a[N]里面查找,时间复杂度为O(N*log2N)。

解法三用到了一个技巧,先把数组排序,i = 0,j = N-1,这样a[i]+a[j]正好是一个中间数,如果想减小sum的值,就一直缩小j,如果想增加sum的值,就增加i。

扩展问题

1. 如果“两个数字”改成“任意个数字”,还是可以利用解法二的,用sum在数组里减去m个数,看最后结果是否能得到0。

2. 如果找不到结果,可以保存做差的结果,找出差值最小的解。

3. NP和NP-Complete问题。这是个概念问题,首先是P问题,包含的是在多项式时间内可解的问题。NP的意思是非确定型多项式时间,即不能用多项式表示复杂度的问题。而NP完全问题是NP问题中“难”的问题。也许以上概念理解得不对,但总是跟多项式有关系。别人已经在证明P不等于NP问题,而我连命题里面的概念还没有搞清楚,差距啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值