สมมติว่าเรามีอาร์เรย์จำนวนเต็มที่ไม่ว่างเปล่า เราต้องหาจำนวนการเคลื่อนไหวขั้นต่ำที่จำเป็นในการทำให้องค์ประกอบอาร์เรย์ทั้งหมดเท่ากัน โดยที่การย้ายจะเพิ่มหรือลดองค์ประกอบที่เลือก โดย 1 ดังนั้นเมื่ออาร์เรย์เป็นเหมือน [1, 2, 3] ผลลัพธ์จะเป็น 2 เนื่องจาก 1 จะเพิ่มขึ้นเป็น 2 และ 3 จะลดลงเป็น 2
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เรียงลำดับจำนวนอาร์เรย์
- ตั้งค่าตัวนับเป็น 0
- สำหรับ i ใน nums ทำ
- ตัวนับ :=ตัวนับ + ค่าสัมบูรณ์ของ (i – nums[length of nums / 2])
- เคาน์เตอร์คืนสินค้า
ตัวอย่าง(Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −
class Solution: def minMoves2(self, nums): nums.sort() counter = 0 for i in nums: counter += abs(i-nums[len(nums)//2]) return counter ob1 = Solution() print(ob1.minMoves2([2,5,3,4]))
อินพุต
[2,5,3,4]
ผลลัพธ์
4