Mô tảTìm Element Xảy ra lần b trong một loạt các kích thước n * k + b
Cho một mảng kích thước (n*k+b)
nơi n phần tử xảy ra lần k và một yếu tố xảy ra lần b, nói cách khác có là n+1
Các phần tử riêng biệt. Cho rằng 0 < b < k
tìm phần tử xảy ra b lần.
giải pháp Toan My
giải pháp hiển nhiên sẽ được sử dụng băm nhưng nó sẽ không hoạt động nếu những con số rất lớn. Phức tạp là
O(n)
Sử dụng bản đồ để lưu trữ các tần số của mỗi yếu tố và sau đó đi qua bản đồ để tìm các yếu tố xảy ra b times.As Bản đồ của được thực hiện như cây chiều cao cân phức tạp sẽ
O(nlogn)
.
Cả hai giải pháp của tôi đều được chấp nhận nhưng người phỏng vấn muốn một giải pháp tuyến tính mà không sử dụng băm và gợi ý ông đưa ra là chiều cao cây cố định trong đó bạn đang lưu trữ tần số, nhưng tôi không thể ra giải pháp đúng.
Tôi muốn biết làm thế nào để giải quyết vấn đề này trong thời gian tuyến tính mà không băm?
EDIT:
mẫu:
Input: n=2 b=2 k=3
Aarray: 2 2 2 3 3 3 1 1
Output: 1
nếu b == k thì sao? –
Lưu ý rằng giải pháp của bạn là 'O ((n * k + b) logn)', và không phải 'O (nlogn)' - đưa ra các điều khoản của câu hỏi. – amit
Bạn có thể cho một mảng mẫu giữ các giá trị mẫu không? –