题目1
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对,输出所有对。
Python题解
def find_num_with_sum(data, sum):
hash_set = set()
res = []
for idx, num in enumerate(data):
another_num = sum - num
if another_num in hash_set:
res.append((num, another_num))
else:
hash_set.add(num)
return res
if __name__ == '__main__':
data = [1, 2, 4, 13, 11, 14]
res = find_num_with_sum(data, 15)
print res
data = [2, 7, 11, 15]
res = find_num_with_sum(data, 9)
print res
题目2
Python题解
def find_continuous_seq(sum):
res = []
if sum < 3:
return
small, big = 1, 2
middle = (1 + sum) / 2
cur_sum = small + big
while small < middle:
if cur_sum == sum:
res.append((small, big))
while cur_sum > sum and small < middle:
cur_sum -= small
small += 1
if cur_sum == sum:
res.append((small, big))
big += 1
cur_sum += big
return res
if __name__ == '__main__':
print find_continuous_seq(15)