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