Gần đây tôi đã xem câu hỏi phỏng vấn này:Số thống trị thập phân trong một mảng
Bạn được cung cấp n số thực trong một mảng. Một số trong mảng được gọi là tỷ lệ thập phân nếu nó xuất hiện nhiều hơn n/10 lần trong mảng. Đưa ra một thuật toán thời gian O (n) để xác định xem mảng đã có có ưu thế thập phân hay không.
Bây giờ tôi có thể nghĩ đến một vài cách để giải quyết việc này, và bất kỳ sự tổng quát của câu hỏi này (tức là tìm thấy bất kỳ số xuất hiện K lần trong một mảng)
Người ta có thể được để thực hiện một bảng băm trong đường chuyền 1 , và sau đó đếm số lần xuất hiện trong đường chuyền 2, đó sẽ là O (n), nhưng sử dụng O (n) không gian là tốt,
có một cách using 9 buckets
nhưng, có cách nào chúng tôi có thể làm điều đó trong một không gian liên tục ?? Bất kỳ đề xuất??
[EDIT] tôi đã không kiểm tra các giải pháp 9 xô, độc giả có thể muốn đi qua bình luận nm của dưới
Nhóm sử dụng 9 nhóm không đúng. Một ví dụ: {0,1,2,3,4,5,6,7,8,9,10,0}. –
Có lẽ nếu bạn sửa đổi giải pháp đó một chút, nó có thể được lưu lại. Không hiển thị các thùng chứa 2 hoặc nhiều hơn vào cuối, thay vào đó hãy truy cập lại và đếm lại từng mục trong thùng. –
Tôi xin lỗi, tôi đã không đi qua toàn bộ mã, nhưng ý tưởng cơ bản mà tôi đã nhận ra, tôi có thể nghĩ ra một giải pháp bằng cách sử dụng, vì vậy tôi đăng liên kết ở đây ... tôi vẫn sẽ không chỉnh sửa phần đó, bởi vì tất cả những gì tôi dự định là bất kỳ độc giả nào cũng có ý tưởng rằng có một cách như vậy quá Cảm ơn bạn đã nhập :) –