สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องหาต้นทุนขั้นต่ำเพื่อจัดเรียงรายการในลำดับใดๆ (จากน้อยไปมากหรือมากไปหาน้อย) ค่าใช้จ่ายคือผลรวมของความแตกต่างระหว่างมูลค่าเก่ากับค่าใหม่ขององค์ประกอบใดๆ
ดังนั้นหากอินพุตเป็น [2, 5, 4] ผลลัพธ์จะเป็น 2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- temp:=คัดลอกหมายเลขอาร์เรย์
- เรียงลำดับอุณหภูมิรายการ
- c1:=0, c2:=0
- n:=ขนาดของ nums
- สำหรับ i ในช่วง 0 ถึง n ให้ทำ
- ถ้า 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