
calculateStoneMoving
Bạn được cung cấp N
hòn đá. Mỗi hòn đá đặt tại một tọa độ nguyên Xi
. Các hòn đá có thể có tọa độ bằng nhau.
Bạn có thể thực hiện một trong hai thao tác di chuyển với số lần không giới hạn (hoặc có thể không di chuyển) trên mỗi hòn đá:
- Thao tác 1: Di chuyển hòn đá sang trái hoặc sang phải 2 đơn vị với chi phí bằng 0. (Nghĩa là di chuyển hòn đá ở toạ độ hiện tại sang
X-2
hoặcX+2
) - Thao tác 2: Di chuyển hòn đá sang trái hoặc sang phải 1 đơn vị với chi phí bằng 1. (Nghĩa là di chuyển hòn đá ở tọa độ hiện tại sang
X-1
hoặcX+1
)
Lưu ý: Hòn đá được phép di chuyển sang bất kì tọa độ nguyên nào (có thể bằng 0, hoặc âm).
Nhiệm vụ của bạn là tìm tổng số chi phí tối thiểu cần thiết để di chuyển tất cả các hòn đá về cùng một tọa độ
Ví dụ:
- Cho
arr=[1,2,3]
, đầu racalculateStoneMoving(arr) = 1
Dời mọi tọa độ vềX=3
, khi đó hòn đá ở vị tríX=1
dời vềX=3
(dùng thao tác1
) sẽ không bị tốn chi phí, vị tríX=2
dời vềX=3
(dùng thao tác2
) sẽ tốn chi phí là1
đơn vị. - Cho
arr=[2,2,2,3,3]
, đầu racalculateStoneMoving(arr) = 2
Dời mọi hòn đá về tọa độX=2
, khi đó2
hòn đá ở vị tríX=3
dời vềX=2
(dùng thao tác2
) sẽ bị tốn chi phí bằng2*1=2
Đầu vào / Đầu ra:
- [Giới hạn thời gian thực hiện] 0.5 giây (C++)
- [Đầu vào] array.integer arr
1 ≤ arr.length ≤ 100
1 ≤ arr[i] ≤ 109
- [Đầu ra] integer
Tổng số chi phí tối thiểu cần thiết để di chuyển tất cả hòn đá về cùng một tọa độ.
Post Comment