12. 微软面试题:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
题目:输入一个已经按升序排序过的数组和一个数字,
在数组中查找两个数,使得它们的和正好是输入的那个数字。

要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。


分析:

通过设置数组首尾指针,i = 0, j = len -1, 

因为数组是有序的,当array[i] + array[j] 大于给定的数字value时,j -- ,

如果小于, i++

如果相等,就恭喜你,找到了。 


例如输入数组1

【java 面试100】14.输入一个已经按升序排序过的数组一个数字, 在数组查找个数,使得它们的正好输入的那个数 (思路参照july博客,本人习惯java顾用java重新实现) 题目:输入一个已经按升序排序过的数组一个数字, 在数组查找个数,使得它们的正好输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。 1、 2、  4、7、11、15 阅读详情

相关推荐

微软面试题:求升序排序数组数字中,最小的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]

realmagician的专栏 1542

算法讨论(七)--已排序数组中寻找个数,其等于给定的数

<br />题目:输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字。要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。<br />例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。<br /> <br />分析:设num1+num2,由于是排好序的数组,将num1为第一个数,num2为最后一个数,如果大于给定值,就将第一个数与倒数第二个数相加,即num2往前移,若小于则num1往后移。<br /

aixueVC的专栏 1002

微软的100道算法面试题(一)

程序员为什么要学数据结构? 在计算机发展的初期,人们使用计算机的主要目的是处理数值计算问题。使用计算机解决具体问题一般需要经过以下几个步骤:首先从具体问题抽象出适当的数学模型,然后设计或选择解此数学模型的算法,接着编写程序并进行调试、测试,直至得到最终的解答。 由于最初涉及的运算对象是简单的整型、实型或布尔型数据,所以程序设计者的主要精力集中于程序设计的技巧上,而无需重视数据结构。随着计算...

Java进阶之路 1万+

【练习】输入一个已经按升序排序过的数组一个数字sum,在数组查找个数,使得它们 的正好输入的那个数字sum,要求时间复杂度为O(n)...

1 /************************************************************************/ 2 /* 输入一个已经按升序排序过的数组一个数字sum,在数组查找个数,使得它们 的正好输入的那个数字sum,要求时间复杂度为O(n) 3 4 解题思路:设置头尾个指针,从第一个元素最后一个 5 元素相加,如果大于sum...

weixin_30312557的博客 416

每天学习一点编程(6)(输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字)

输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字。要求时间复杂度是O(n)。 如果有多对数字等于输入数字,输出任意一对即可。 例如:输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。 排序过的数组

zmmdyyyc的专栏 1234

升序数组查找个数,使得它们的正好输入的那个数

微软面试题,难度系数低,题目描述如下: 题目:输入一个已经按升序排序过的数组一个数字,  在数组查找个数,使得它们的正好输入的那个数字。  要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。  例如输入数组1、2、4、7、11、15 数字15。由于4+11=15,因此输出4 11。  逻辑分析: 1、针对一个元素相对少的数组,第一想

pediy_yuhan的专栏 1830

微软,Google面试题 (10) —— 在排序数组中寻找个数等于给定数

题目:输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字。要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。解法一:常规解法。对于每一个数组元素k,寻找n-k有没有在余下的数组里面,这种方法的时间复杂度为O(n^2)。解法二:个指针beginend分别指向数组的头尾。如果*begin + *end大于n,begin向后移动一位。如果小于n,en

cesc 2013

微软100题(14)查找符合条件的个数

题目:输入一个已经按升序排序过的数组一个数字, 在数组查找个数,使得它们的正好输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。 思路:一前一后指针,小了,前面后移,大了,后面前移 bool FindTwoNumInOrderA

liuqing0517的博客 383

排序数组查找为给定值的个数

题目:输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字。要求时间复杂度是O(n)。如果有多对数字等于输入数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。 分析:如果我们不考虑时间复杂度,最简单想法的莫过去先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的...

weixin_30709635的博客 195

[分类整理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、十二月三

结构之法 算法之道 1万+

微软面试题——整数升序数组、数M,输出为M的个数组元素

问题:输入一个已经按升序排序过的数组一个数字,在数组查找个数,使得它们的正好输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字等于输入数字M,输出任意一对即可。例如输入数组1、2、4、7、11、15数字15。由于4+11=15,因此输出411。 一般思路: (1)让指针指向数组的头部尾部,相加,如果小于M,则增大头指针,如果大于则减小尾指针 (2)退出的条件,

Andy_Shun 758

【前端面试】数组排序:array(2),2024年最新微软面试题及答案

面试前要精心做好准备,简历上写的知识点原理都需要准备好,项目上多想想难点亮点,这是面试时能别人不一样的地方。还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。前端面试题汇总网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

m0_61330806的博客 944

分类整理IV 微软等100题系列V0 1版 字符串+数组面试题集锦

分类整理IV 微软等100题系列V0 1版 字符串+数组面试题集锦

gdfyug的博客 208

Java 真实大厂面试题 100 道汇总

1024

曲翎风 587
上一篇: 11. 微软面试题:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
下一篇: 13. 微软面试题:题目:输入一颗二元查找树,将该树转换为它的镜像
3h随然吧
博客等级 码龄18年 91粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值