Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số bước tối thiểu để bằng nhau các phần tử mảng II trong Python

Giả sử chúng ta có một mảng số nguyên không rỗng, cần tìm số bước tối thiểu để làm cho tất cả các phần tử mảng bằng nhau, trong đó một bước là tăng hoặc giảm một phần tử được chọn đi 1. Ví dụ, mảng [1, 2, 3] cho kết quả 2, vì 1 tăng lên 2 và 3 giảm xuống 2.

Để giải quyết, thực hiện các bước sau:

  • Sắp xếp mảng nums
  • Đặt counter = 0
  • Với mỗi i trong nums:
    • counter := counter + giá trị tuyệt đối của (i - nums[độ dài nums / 2])
  • Trả về counter

Ví dụ (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]))

Đầu vào

[2, 5, 3, 4]

Kết quả

4