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
示例
让我们看看下面的实现以更好地理解
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]
输出
16
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP