Saya memiliki situasi di mana saya memiliki rentang input tertentu dan dengan demikian, saya dapat melakukan pengindeksan seluruhnya di O(1) dengan membuat daftar yang merupakan ukuran rentang input dan mengindeks input itu sendiri. Untuk lebih jelasnya, pada dasarnya saya memiliki situasi berikut
a = "inputrange"
rng = ord(max(a)) - ord(min(s))
data = [None] * rng
Masalah saya adalah, saya tidak yakin apakah proses alokasi untuk data
adalah O(1) atau tidak. Secara intuitif, harus ada beberapa cara untuk melakukannya di O(1), karena pada tumpukan saya hanya mendefinisikan titik awal dan akhir untuk data, dan dengan demikian hanya memerlukan waktu O(1) untuk mengalokasikan, tetapi python agak dihapus dari ini jadi saya tidak yakin.
Sangat penting saya dapat mengalokasikan di O(1), karena saya membuat pohon sufiks untuk data masukan, dan untuk memastikan pengindeksan O(1) saat melintasi pohon, saya memerlukan daftar ukuran alfabet (atau peta hash , meskipun saya menghindarinya), tetapi karena pada dasarnya saya mengalokasikan untuk setiap sufiks, saya perlu mengalokasikan agar konstan.
Ide lain yang saya miliki adalah membuat daftar templat dan menyalinnya, tetapi penyalinan memerlukan waktu O(n) sehingga tidak akan berhasil.
EDIT: Ini bukan duplikat dari kompleksitas waktu [var]*n
, saya dengan jelas menyatakan bahwa saya sedang mencari cara untuk membuat daftar alokasi memori di O(1). Hanya karena saya kebetulan menggunakan [var]*n
sebagai metode saya saat ini dalam mengalokasikan memori ini, tidak berarti jawabannya terjawab dengan mengetahui kompleksitas metode ini.
Pertanyaannya masih tetap: Apakah ada cara mengalokasikan ruang untuk daftar kosong dengan python dalam waktu O(1)
None
ke dalam setiap elemen adalah O(n). - person Barmar   schedule 21.04.2021list
sebagai array primitif C.[None] * rng
adalah operasi waktu linier. Tapi tidak ada jalan keluarnya. Alternatifnya, pertimbangkannumpy
dannumpy.empty
- person juanpa.arrivillaga   schedule 21.04.2021N
adalah ukuran daftar tersebut. Catatan,[None]*n
adalah tidak kosong (kecualin ==0
),[]
adalah daftar kosong,[None, None, None]
tidak - person juanpa.arrivillaga   schedule 21.04.2021