📜  Python – 列表中的最小产品对(1)

📅  最后修改于: 2023-12-03 15:04:11.916000             🧑  作者: Mango

Python – 列表中的最小产品对

在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这两个元素的乘积最小。