`

程序员面试题精选100题(10)-在排序数组中查找和为给定值的两个数字

阅读更多

题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。

例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

最初我们找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动;当相等时,打完收工。这样扫描的顺序是从数组的两端向数组的中间扫描。
分享到:
评论

相关推荐

    程序员面试题精选100题.doc

    在排序数组中查找和为给定值的两个数字 - **双指针法**:定义两个指针left和right,分别指向数组的起始位置和结束位置,根据两个指针所指元素之和与目标值的关系移动指针。 - **优化思路**:由于数组已经排序,...

    程序员面试100题数据结构和算法

    10. **查找排序数组中和为给定值的两个数字**:这是经典的“两数之和”问题,使用哈希表可以在O(n)的时间内找到解。 11. **二元查找树镜像**:将二元查找树的结构反转,使得左子树变为右子树,右子树变为左子树。...

    程序员面试题精选100题与解法

    这个面试题要求在不创建新节点的情况下,将给定的二元查找树转换成一个排序的双向链表。有两种主要方法实现这一转换: - **思路一**: - 递归方法:从根节点开始,首先递归处理左子树,将左子树转换为一个有序...

    程序员面试题精选100例.doc

    ### 知识点四:找出数组中两个只出现一次的数字 #### 题目描述 - 给定一个数组,除了有两个元素只出现一次之外,其余元素均出现两次。找出这两个只出现一次的数字。 - **示例**: - 输入数组:`[4, 1, 2, 1, 2]` ...

    程序员面试100题精选

    根据提供的文件信息,本文将对“程序员面试100题精选”进行详细的解析与扩展,旨在为准备参加技术面试的程序员提供有价值的参考。 ### 一、程序员面试的重要性 在当前竞争激烈的IT行业中,拥有一份优秀的简历固然...

    数据结构+算法面试100题

    可以使用两个栈,一个用于常规的push和pop操作,另一个用于存储最小元素,每次push时,如果新元素小于当前最小值,则将新元素也push到最小栈中,否则不做处理。这样,getMin操作始终可以在常数时间内完成。 3. **...

    第12套PHP面试题1

    给定的伪代码使用了三层嵌套循环,分别对应小鸡、母鸡和公鸡的数量范围,然后检查总金额和数量是否等于目标值。 3. **斐波那契数列**:斐波那契数列是一种数学序列,每个数是前两个数的和。给定的伪代码使用循环...

    数据结构+算法100题

    其中,二元查找树(BST)是一种特殊的树形数据结构,在BST中,每个节点至多有两个子节点,且节点的左子树上的所有元素的值均小于它的根节点的值,右子树上的所有元素的值均大于它的根节点的值。 算法是指解决问题的...

    net学习笔记及其他代码应用

    28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...

Global site tag (gtag.js) - Google Analytics