題目描述:
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。
解題思路:
一種方法就是用兩個指標,因為是排序數列,乙個從前,乙個從後,如果和小於s,前面的指標走一步,如果和大於s,後面的指標走一步
# -*- coding:utf-8 -*-
class solution:
def findnumberswithsum(self, array, tsum):
# write code here
fp = 0
bp = len(array) - 1
result_list =
minmul = float("inf")
while fp < bp:
if array[fp] + array[bp] == tsum:
mul = array[fp]*array[bp]
if mul < minmul:
result_list = [array[fp], array[bp]]
minmul = mul
fp += 1
bp -= 1
elif array[fp] + array[bp] > tsum:
bp -= 1
elif array[fp] + array[bp] < tsum:
fp += 1
return result_list
劍指offer 和為s的兩個數
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30,31,47,60 target 40 輸...
劍指offer 和為S的兩個數字
esmp esmp 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 esmp esmp 對應每個測試案例,輸出兩個數,小的先輸出。esmp esmp 首先,先考慮在遞增排序的陣列中找到兩個和為s的數字。這個思路...
劍指offer 和為S的兩個數字
題目描述 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,是的他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。輸出描述 對應每個測試案例,輸出兩個數,小的先輸出。ps 拋物線開口向下,找到的第一組 相差最大的 就是乘積最小的,不需要比較 class solution in...