Python程式:查詢將數字按升序或降序排列的最小成本


假設我們有一個名為 nums 的數字列表,我們需要找到將列表按任意順序(升序或降序)排序的最小成本。這裡的成本是任何元素的舊值和新值之間的差之和。

因此,如果輸入類似於 [2, 5, 4],則輸出將為 2。

為了解決這個問題,我們將遵循以下步驟:

  • temp:= 複製陣列 nums
  • 對列表 temp 進行排序
  • c1:= 0, c2:= 0
  • n:= nums 的大小
  • 對於範圍從 0 到 n 的 i,執行以下操作:
    • 如果 nums[i] 與 temp[i] 不相同,則
      • c1 := c1 + |nums[i]-temp[i]|
    • 如果 nums[i] 與 temp[n-1-i] 不相同,則
      • c2 := c2 + |nums[i]-temp[n-i-1]|
  • 返回 c1 和 c2 的最小值

讓我們看看下面的實現以更好地理解:

示例

class Solution:
   def solve(self, nums):
      temp=nums.copy()
      temp.sort()
      c1=0
      c2=0
      n=len(nums)
      for i in range(n):
         if nums[i]!=temp[i]:
            c1+=abs(nums[i]-temp[i])
         if nums[i]!=temp[n-1-i]:
            c2+=abs(nums[i]-temp[n-i-1])
      return min(c1,c2)
ob = Solution()
print(ob.solve([2, 5, 4]))

輸入

[2, 5, 4]

輸出

2

更新於: 2020年10月6日

721 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告