Cho danh sách nums, tìm chi phí tối thiểu để sắp xếp theo thứ tự tăng dần hoặc giảm dần. Chi phí là tổng hiệu tuyệt đối giữa giá trị cũ và mới của từng phần tử.
Ví dụ
Đầu vào: [2, 5, 4].
Đầu ra: 2.
Thuật toán
- Sao chép và sắp xếp mảng thành
temp. - Tính
c1= tổng chi phí biến đổi thànhtemp(tăng dần). - Tính
c2= tổng chi phí biến đổi thànhtempđảo ngược (giảm dần). - Trả về
min(c1, c2).
Mã nguồn Python
class Solution:
def solve(self, nums):
temp = nums.copy()
temp.sort()
c1 = 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-1-i])
return min(c1, c2)
ob = Solution()
print(ob.solve([2, 5, 4]))
Đầu vào / Đầu ra
Input: [2, 5, 4]
Output: 2