Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จำนวนการเคลื่อนไหวน้อยที่สุดเพื่อทำให้องค์ประกอบอาร์เรย์เท่ากัน II ใน Python

สมมติว่าเรามีอาร์เรย์จำนวนเต็มที่ไม่ว่างเปล่า เราต้องหาจำนวนการเคลื่อนไหวน้อยที่สุดที่จำเป็นเพื่อทำให้องค์ประกอบทั้งหมดในอาร์เรย์เท่ากัน โดยการเคลื่อนไหวคือการเพิ่มหรือลดองค์ประกอบที่เลือกลง 1 ดังนั้นเมื่ออาร์เรย์เป็น [1, 2, 3] ผลลัพธ์จะเป็น 2 เพราะ 1 จะเพิ่มเป็น 2 และ 3 จะลดเป็น 2

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนต่อไปนี้ −

  • เรียงอาร์เรย์ nums
  • ตั้ง counter เป็น 0
  • for i ใน nums ทำ
    • counter := counter + ค่าสัมบูรณ์ของ (i - nums[ความยาวของ nums / 2])
  • คืนค่า counter

ตัวอย่าง (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