判断数组中有没有两个元素的和为x。
可以使用哈希算法来解此题,从小到大枚举数组中的每一个数ai,当枚举到ai时,对其哈希后标记其出现过,然后求x−ai的哈希值,再判断x−ai是否已经被标记了,如果标记过,说明存在;否则,到枚举结束都没发现的话,就是不存在,按照题意输出即可。
小红刚刚开始学算法,遇到的第一个问题为A+B Problem,其内容如下:给定一个按升序排列的数组,以及一个数x,要求在数组中找到一对数{A,B},使得A+B=x。
这对小红来说太难了!于是他找到了你求助。
注:A和B可以相等
第一行输入一个按升续排序过的整数数组,数组元素不可重复,数组最大不超过1000个元素。 第二行输入一个整数x。
输出一行三个整数,第一个表示结果是否正常(0表示异常或未找到,1表示正常),第二个对应找到的数组索引小的数字,第三个对应找到的数组索引大的数字。
三个整数用单个空格隔开。
如果结果异常或未找到,后两个数字返回均为0。
输入
1 3 5 7 9 11 13 17 19
12
输出
1 3 9