Python程序:求乘积最大和


假设我们有两个列表,名为nums和multipliers。现在考虑一个操作,我们可以从nums中移除任何数字,从multipliers中移除任何数字,然后将它们相乘。我们必须重复此操作,直到其中一个列表为空,我们必须找到乘积数字的最大和。

因此,如果输入类似于nums = [-4, 4, 3] multipliers = [-2, 2],则输出将为16,因为我们可以将-4与-2匹配,将4与2匹配以得到-4 * -2 + 4 * 2。

为了解决这个问题,我们将遵循以下步骤:

  • 对列表nums进行排序

  • 对列表multipliers进行排序

  • res := 0

  • 如果nums的大小 < multipliers的大小,则

    • 交换nums和multipliers := multipliers, nums

  • n := nums的大小

  • m := multipliers的大小

  • 对于 i in range 0 到 m - 1,执行:

    • 如果 multipliers[i] <= 0,则

      • res := res + nums[i] * multipliers[i]

    • 否则,

      • res := res + multipliers[i] * nums[n -(m - i)]

  • 返回res

示例

让我们看看下面的实现以更好地理解

Open Compiler
def solve(nums, multipliers): nums.sort() multipliers.sort() res = 0 if len(nums) < len(multipliers): nums, multipliers = multipliers, nums n, m = len(nums), len(multipliers) for i in range(m): if multipliers[i] <= 0: res += nums[i] * multipliers[i] else: res += multipliers[i] * nums[n - (m - i)] return res nums = [-4, 4, 3] multipliers = [-2, 2] print(solve(nums, multipliers))

输入

[-4, 4, 3], [-2, 2]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

16

更新于:2021年10月12日

251 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告