首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,我们可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,当输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,我们可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,当输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使
admin
2017-04-28
23
问题
输入一个按升序排序过的整数数组{1、2、4、7、11、15}以及一个整数数字15,我们可以从该数组中找到两个数字,即4和11,使得4+11=15。请实现一个时间上尽可能高效率的算法,当输入一个已经按升序排序过的整数数组和一个整数数字,在数组中查找两个数,使得它们的和正好是输入的那个整数数字。如果有多对数字的和等于输入的整数数字,输出任意一对即可。要求:
给出算法的基本设计思想。
选项
答案
基本设计思想:如果我们不考虑时间复杂度,最简单的想法是先在数组中固定一个数字,再依次判断数组中剩下的n—1个数字与它的和是不是等于输入的数字。可惜这种思路需要的时间复杂度是O(n
2
),不满足题意要求。 假设现在随便在数组中找到两个数,如果它们的和等于输入的数字,那太好了,我们找到了要找的两个数字;如果小于输入的数字呢?我们希望两个数字的和再大一点。由于数组已经排好序了,我们是不是可以把较小的数字往后面移动一个数字?因为排在后面的数字要大~些,那么两个数字的和也要大一些,就有可能等于输入的数字了;同样,当两个数字的和大于输入的数字的时候,我们把较大的数字往前移动,因为排在数组前面的数字要小一些,它们的和就有可能等于输入的数字了。 我们把前面的思路整理一下:最初我们找到数组的第一个数字和最后一个数字。当两个数字的和大于输入的数字时,把较大的数字往前移动;当两个数字的和小于数字时,把较小的数字往后移动;当相等时,正合题意。
解析
转载请注明原文地址:https://kaotiyun.com/show/KWRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
在印度独立和巴勒斯坦建国问题上,英国扮演了什么角色?有什么影响?
《关于建国以来党的若干历史问题的决议》
关于德意志宗教改革的说法不正确的是()
蒋介石在国民党的()全国代表大会上的对外关系演说表示国民党对日关系开始发生变化。
新文化运动把斗争矛头指向了儒家传统道德,是因为()
在周初分封中,分封同姓诸侯国、异姓诸侯国,也分封圣王之后,下面属于圣王之后的封国为()。
设某计算机系统有一块CPU、一台输入设备、一台打印机。现有两个进程同时进入就绪状态,且进程A先得到CPU运行,进程B后运行。进程A的运行轨迹为:计算50ms,打印信息100ms,再计算50ms,打印信息100ms,结束。进程B的运行轨迹为:计算50
下列选项中,降低进程优先级的合理时机是____。
当系统发生抖动(thrashing)时,可以采取的有效措施是____。I.撤销部分进程Ⅱ.增加磁盘交换区的容量Ⅲ.提高用户进程的优先级
某机采用计数器定时查询方式来进行总线判优控制,共有4个主设备竞争总线使用权,当汁数器初值恒为102时,4个主设备的优先级顺序为()。
随机试题
Weshallhavecompletedtheworkbythetimehe______backnextweek.
WhentheZodiackilled,hegot______.The33-year-oldcasehashadmorethan______.
轻度水肿的特点是
患者肢体关节疼痛较剧,痛有定处,得热痛减,遇寒痛增,疼痛局部皮色不红,触之不热,舌苔薄白,脉弦紧。治疗应首选
案情:四达电脑公司与某显示屏生产厂家在2012年5月份签订一份合同,双方约定四达电脑公司应于同年7月份向显示屏生产厂家交付l0台电脑,显示屏生产厂家则同时向四达电脑公司交付价值6万元的电脑显示屏。后来四达电脑公司企业转产不从事电脑行业,但由于过去业务上的来
出口退税
企业发行的下列金融工具应当分类为权益工具的是()。
如何签订物业服务合同?
2013年1—5月该省城乡建设项目中亿元以上平均项目规模是()。
Iclosemyeyesandcanstillhearher—thelittlegirlwitha【C1】______sostrongandpowerfulwecouldhearherhalfwaydownthe
最新回复
(
0
)