【问题标题】:Minimum element in a pair from 2 lists/arrays来自 2 个列表/数组的一对中的最小元素
【发布时间】:2020-10-26 14:04:24
【问题描述】:

我有 2 个已排序的整数列表或数组 ab,它们都具有相同数量的元素。我想将a 中的一个元素与b 中的一个元素配对,这样当我在所有对中取较小的元素时,它们的总和是最小的。 例如,

a=[1,7,14,18]
b=[8,9,10,12]

我将配对[(1,12),(7,10),(14,9),(18,8)],然后在每对中取较小的元素,即[1,7,9,8],我将得到最小总和。这只是我采取的一种可能性。我想知道这种将第一个列表的元素与第一个元素配对并与第二个列表的元素从 end 开始并向后移动的方法是否会给我最小的总和。

【问题讨论】:

  • 那么您面临的问题是什么?
  • @Waqar "我想知道这种将第一个列表的元素与第一个元素配对并与第二个列表的元素从末尾开始并向后移动的方法是否会给我最低金额。”
  • <algorithm> 库拥有您需要的一切。
  • 我删除了特定于语言的标签,因为这是关于算法而不是实现。
  • 对于这个例子,有 24 种可能的配对,所以应该可以蛮力检查所有可能的组合

标签: arrays list algorithm min


【解决方案1】:

是的,将最大与最小配对的方法可行:

  1. 如果第二个数组中的最大元素小于第一个数组中的最小元素,则任何配对方法都可以使用,因此请使用您的方法配对其余元素。
  2. 如果不是,将第一对与您的方法配对将确保计算第一对中最小的(应该计算在内),而不计算第二对中最大的(不应计算在内)
  3. 对两个数组中的剩余元素重复第 1 步和第 2 步,直到用完元素

如您所见,数组中剩余的最小元素将始终在沿途的每一步计算,因此结果对中最小元素的总和将根据需要最小化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多