📅  最后修改于: 2023-12-03 15:04:11.916000             🧑  作者: Mango
在Python中,我们可以使用列表(List)来存储数据,并对列表中的数据进行操作,其中一种操作是找到列表中最小的产品对。
在一个长度为n的整数列表中,找到最小的乘积对。在这个问题中,我们需要找到两个元素a和b,使得它们的乘积最小,即 a * b 是列表中最小的。
我们可以使用Python内置的排序函数对列表进行排序,然后找到排名最靠前的两个元素。但是,这样做的时间复杂度为O(nlogn),不够高效。
一个更高效的解决方案是,我们可以同时找到列表中的最小值和次小值。我们可以使用一个循环遍历列表,并跟踪当前的最小值和次小值。当我们遍历到一个新元素时,我们比较它和当前最小值以及次小值,然后对它们进行更新。
def min_product_pair(arr):
min1 = float('inf')
min2 = float('inf')
for i in arr:
if i < min1:
min2 = min1
min1 = i
elif i < min2:
min2 = i
return (min1, min2)
在上述代码中,我们遍历了一次列表,时间复杂度为O(n)。因此,这个解决方案的时间复杂度为O(n)。
arr = [5, 3, 2, 4, 1]
print(min_product_pair(arr))
输出:
(1, 2)
这意味着,列表中1和2这两个元素的乘积最小。