题目博客:
http://blog.csdn.net/v_JULY_v/article/details/6057286
题目:
在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11
代码为:
#coding=utf-8
'''
Created on 2014年5月24日
@author: Administrator
'''
import itertools
def GetTwoNum(sum_num,num_li):
less_set=set()
less_set=set(itertools.takewhile(lambda x:x<sum_num,num_li))
for num in less_set:
if sum_num-num in less_set:
return num,sum_num-num
if __name__ == '__main__':
num_li=[1,2,4,7,11,15]
print GetTwoNum(15, num_li)