题目:输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
分析:
通过设置数组首尾指针,i = 0, j = len -1,
因为数组是有序的,当array[i] + array[j] 大于给定的数字value时,j -- ,
如果小于, i++
如果相等,就恭喜你,找到了。
例如输入数组1、
相关推荐
微软面试题:求两升序排序数组两两数字之和中,最小的k个值
题目:有两个升序数组a[n]、b[n],求a[i]+b[i]中和最小的k个。 解答:对于数组a[n],b[n],和最小的必然是a[0]+b[0],那么第二小的必然是a[1]+b[0]和a[0]+b[1]中较小的。若较小值是a[1]+b[0],则第三小的必然是a[0]+b[1]、a[1]+b[1]、a[2]+b[0]中最小的。将a[0]+b[1]、a[1]+b[1]、a[2]+b[0]和对
算法讨论(七)--已排序数组中寻找两个数,其和等于给定的数
<br />题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。<br />例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。<br /> <br />分析:设num1+num2,由于是排好序的数组,将num1为第一个数,num2为最后一个数,如果和大于给定值,就将第一个数与倒数第二个数相加,即num2往前移,若小于则num1往后移。<br /
微软的100道算法面试题(一)
程序员为什么要学数据结构? 在计算机发展的初期,人们使用计算机的主要目的是处理数值计算问题。使用计算机解决具体问题一般需要经过以下几个步骤:首先从具体问题抽象出适当的数学模型,然后设计或选择解此数学模型的算法,接着编写程序并进行调试、测试,直至得到最终的解答。 由于最初涉及的运算对象是简单的整型、实型或布尔型数据,所以程序设计者的主要精力集中于程序设计的技巧上,而无需重视数据结构。随着计算...
【练习】输入一个已经按升序排序过的数组和一个数字sum,在数组中查找两个数,使得它们 的和正好是输入的那个数字sum,要求时间复杂度为O(n)...
1 /************************************************************************/ 2 /* 输入一个已经按升序排序过的数组和一个数字sum,在数组中查找两个数,使得它们 的和正好是输入的那个数字sum,要求时间复杂度为O(n) 3 4 解题思路:设置头尾两个指针,从第一个元素和最后一个 5 元素相加,如果大于sum...
每天学习一点编程(6)(输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字)
输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。 如果有多对数字的和等于输入的数字,输出任意一对即可。 例如:输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 排序过的数组和
升序数组中查找两个数,使得它们的和正好是输入的那个数字
微软面试题,难度系数低,题目描述如下: 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和11。 逻辑分析: 1、针对一个元素相对少的数组,第一想
微软,Google面试题 (10) —— 在排序数组中寻找两个数的和等于给定数
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解法一:常规解法。对于每一个数组元素k,寻找n-k有没有在余下的数组里面,这种方法的时间复杂度为O(n^2)。解法二:两个指针begin和end分别指向数组的头和尾。如果*begin + *end大于n,begin向后移动一位。如果小于n,en
微软100题(14)查找符合条件的两个数
题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 思路:一前一后指针,和小了,前面后移,和大了,后面前移 bool FindTwoNumInOrderA
在排序数组中查找和为给定值的两个数字
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 分析:如果我们不考虑时间复杂度,最简单想法的莫过去先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的...
[分类整理IV]微软等100题系列V0.1版:字符串+数组面试题集锦
微软等100题系列V1.0版整理I:字符串+数组面试题集锦 July 2010年12月30日第4章 字符串+数组面试题在微软等100题系列V0.1版中,此类字符串+数组的问题,占了足足22道。可见 字符串+数组等基础问题之重要性。接下来的俩天,我会加快分类整理完100题系列V0.1版,然后加紧整理完网友的答案回复,最后,我挑选其中最为经典的几道题,直接在博客上贴出源码、答案。为了迎接在2011年元旦之际,微软等数据结构+算法面试100题系列V0.2版的出炉。请继续保持关注。谢谢。:D。July、十二月三
微软面试题——整数升序数组、数M,输出和为M的两个数组元素
问题:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字M,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。 一般思路: (1)让指针指向数组的头部和尾部,相加,如果小于M,则增大头指针,如果大于则减小尾指针 (2)退出的条件,
【前端面试】数组排序:array(2),2024年最新微软面试题及答案
面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。前端面试题汇总网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
分类整理IV 微软等100题系列V0 1版 字符串+数组面试题集锦
分类整理IV 微软等100题系列V0 1版 字符串+数组面试题集锦
Java 真实大厂面试题 100 道汇总
1024
1542




被折叠的 条评论
为什么被折叠?



