针对给定问题开发并实现数组算法 “给定一个由n个整数和一个整数b组成的数组A,找出A中是否存在两个元素c和d,使得c + d = b”
您的算法运行时间不得超过Θ(n log n)时间
答案 0 :(得分:-1)
一种蛮力解决方案是遍历c并遍历d并测试c + d = b。但是,时间复杂度为$ O(n ^ 2)$。
以另一种方式,因为它只需要检查这种对的存在,就可以将问题转换为搜索问题,即给定c和b,是否在数组中存在等于d的元素。而且二进制搜索产生的时间复杂度为$ O(log n)$,因此值得一试。
算法
总时间复杂度为$ O(nlog n)$。