Algorithm “;给定一个由n个整数和一个整数b组成的数组A,找出A中是否存在两个元素c和d,例如c+;d=b";
针对给定问题开发并实现一个数组算法 给定一个由n个整数和一个整数b组成的数组A,找出A中是否存在两个元素c和d,例如c+d=bAlgorithm “;给定一个由n个整数和一个整数b组成的数组A,找出A中是否存在两个元素c和d,例如c+;d=b";,algorithm,Algorithm,针对给定问题开发并实现一个数组算法 给定一个由n个整数和一个整数b组成的数组A,找出A中是否存在两个元素c和d,例如c+d=b 您的算法运行时间不应超过Θ(n log n)时间蛮力解决方案是循环c和循环d,并测试c+d=b。但是,时间复杂度为$O(n^2)$ 换一种方式考虑,因为它只需要检查这样一对的存在,问题可以转化为搜索问题,即给定c和b,数组中是否有等于d的元素。二进制搜索产生的时间复杂度为$O(logn)$,因此值得一试 阿尔戈 对数组进行排序(单位为$O(nlog n)$) 循环c,找
您的算法运行时间不应超过Θ(n log n)时间蛮力解决方案是循环c和循环d,并测试c+d=b。但是,时间复杂度为$O(n^2)$ 换一种方式考虑,因为它只需要检查这样一对的存在,问题可以转化为搜索问题,即给定c和b,数组中是否有等于d的元素。二进制搜索产生的时间复杂度为$O(logn)$,因此值得一试 阿尔戈
总的时间复杂度是$O(nlog n)$。“开发和实现”:这确实是你应该做的。当你遇到一个特定的问题时,让我们知道。使用两个指针可以将搜索部分减少到
O(n)
,尽管总的复杂度仍然是O(n log n)
由于排序问题。@FeiXiang谢谢你的评论。你介意再详细一点吗?我想知道。查一下。这个问题经常被用作双指针技术的一个例子,所以有很多很好的解释。