Computer >> Máy Tính >  >> Lập trình >> Python

Di chuyển tối thiểu đến phần tử mảng bằng nhau II trong Python


Giả sử chúng ta có một mảng số nguyên không rỗng, chúng ta phải tìm số lần di chuyển tối thiểu cần thiết để làm cho tất cả các phần tử của mảng bằng nhau, trong đó một lần di chuyển là tăng hoặc giảm một phần tử đã chọn bằng 1. Vì vậy, khi mảng giống như [1, 2, 3], thì kết quả đầu ra sẽ là 2, vì 1 sẽ tăng lên 2 và 3 sẽ giảm xuống 2.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • sắp xếp các số mảng
  • đặt bộ đếm là 0
  • đối với tôi trong nums, hãy thực hiện
    • bộ đếm:=bộ đếm + tuyệt đối của (i - nums [độ dài của nums / 2])
  • bộ đếm trả lại

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

[2,5,3,4]

Đầu ra

4