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]|
- 如果 nums[i] 與 temp[i] 不相同,則
- 返回 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
廣告