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

更新於:2021年10月12日

251 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告