題目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:
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:
while cur_sum > sum and small < middle:
cur_sum -= small
small += 1
if cur_sum == sum:
big += 1
cur_sum += big
return res
if __name__ == '__main__':
print find_continuous_seq(15)
和為S的兩個數字 和為S的連續正數序列
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。維護首位兩個指標,不斷向中間夾逼。class solution if array left array right sum if array left array righ...
面試題41 和為s的兩個數字,和為s的連續正數序列
題目一 輸入乙個遞增排序的陣列和數字,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。例如輸入陣列和數字15,由於4 11 15,因此輸出4和11。思路 可以利用2個指標,分別指向陣列的第乙個元素和最後的乙個元素,如果兩元素之和大於我們輸入的和,則將第二個指標向...
和為s的兩個數字 VS 和為s的連續正數序列42
題目一 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。例如輸入陣列和數字15。由於4 11 15,因此輸出4和11。解題思路 先在陣列中選擇兩個數 第乙個數和最後乙個數 如果它們的和等於輸入的s,那麼就找到了數字。如果小於s...