Pertanyaan ini dan pertanyaan ini membuat saya berpikir sedikit. Untuk menyortir array panjangdengan elemen unik di , kita harus dapat menyimpan jumlah nilai dalam array. Ada beberapa saran, tapi saya sedang mencari cara untuk melakukan ini dalam kasus linear terburuk. Lebih spesifik:
Mengingat daftar dari unsur dengan unsur yang berbeda, menentukan daftar tupel dari semua elemen yang unik sehingga adalah hitungan elemen di .
Berikut adalah beberapa (gagal) ide yang saya miliki dan telah disarankan:
- Balanced Binary Search Tree - Dengan ini akan membutuhkan untuk memasukkan ke dalam pohon dan meningkatkan nilai. Setelah memasukkan kita bisa melakukan traversal pohon di . Jadi, total waktu keluar ke yang terlalu lambat.
- Hash Map - Dengan ini kita bisa mendapatkan sisipan yang diharapkan dan dengan demikian perkiraan waktu. Namun, ini masih bukan kasus terburuk.
- Mengosongkan ruang Pemetaan - Cari minimum dan elemen maksimum di . Mengalokasikan (tapi jangan tidak menginisialisasi) cukup memori untuk menutupi kisaran ini. Gunakan memori ini pada dasarnya sebagai peta hash dan sertakan hash acak sehingga kami tidak mencoba mengakses memori yang rusak. Strategi ini menghadirkan masalah. (1) Ini probabilistik dengan kemungkinan kegagalan yang sangat sangat sangat rendah, tetapi masih belum dijamin. Menggunakan memori seperti ini membatasi kita pada batasan floating-point atau integer.
- Array Asosiatif - Ada banyak array asosiatif lainnya yang dapat digunakan, mirip dengan peta hash dan BST, tetapi saya tidak menemukan yang cocok dengan batasan ini.
Mungkin ada beberapa metode yang jelas saya lewatkan, tetapi saya juga berpikir itu bisa berpotensi tidak mungkin. Apa yang kamu pikirkan?