Đây là một loại câu hỏi khoảng cách chỉnh sửa, và rất dễ dàng. Tôi khá là chết não về chủ đề này và không thể tìm ra nó cho đến nay.
Cho một loạt các số, ví dụ
[3, 1, 1, 1]
Làm thế nào một cách hiệu quả nhất có thể biến tất cả các số thành cùng một số, với số lần "di chuyển" tối thiểu? Bằng cách "di chuyển" có nghĩa là thêm hoặc xóa một từ một số.
Trong ví dụ trên, các động thái hiệu quả nhất sẽ là:
[1, 1, 1, 1]
Điều này sẽ cần 2 lần di chuyển, giảm số thứ nhất hai lần.
Tôi không thể tìm ra cách tốt nhất để tìm ra điều này, với các mảng lớn hơn hàng trăm số.
Ban đầu tôi đã thử tính số trung bình làm tròn (tổng của tất cả chia cho chiều dài), sau đó giảm chúng xuống mức trung bình được tính, nhưng ví dụ trên đã phá vỡ điều này, yêu cầu 4 di chuyển thay vì 2.
Tôi cho rằng tôi có thể hình:
- Trung bình,
- Chế độ,
- Trung vị
và lấy khoảng cách chỉnh sửa của từng cái, chọn khoảng cách tối thiểu. Tuy nhiên, tôi không chắc chắn rằng điều này sẽ đúng trong mọi trường hợp. Làm sao tôi biết được?