和为s的两个数字python
程序员文章站
2024-03-15 21:34:42
...
思路:
因为数组是有序的,所以可以用双指针,指向数组的首尾,具体步骤如下:
1.初始化:指针low指向数组首, 指针fast指向数组尾部
2. 如果arr[low] + arr[fast] == sum , 说明是可能解
3. 否则如果arr[low] + arr[fast] > sum, 说明和太大,所以fast -= 1
4. 否则如果arr[low] + arr[fast] < sum, 说明和太小,所以low += 1
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
lens = len(array)
low = 0
fast = lens - 1
result = []
ji = float('inf')
while low < fast:
if array[low] + array[fast] == tsum:
if ji > array[low] * array[fast]:
ji = array[low] * array[fast]
result.append(array[low])
result.append(array[fast])
low += 1
fast -= 1
elif array[low] + array[fast] < tsum:
low += 1
else:
fast -= 1
return result
上一篇: networkx读取gml图文件
下一篇: 寻找数组中最大最小值