Sobes.tech
Junior — Middle

Kā var izņemt jebkuru elementu no masīva (vektora) pastāvīgā laikā, ja elementu kārta nav svarīga?

sobes.tech AI

Atbilde no AI

Ja jaudas elementu secība masīvā (vektorā) nav svarīga, varat brīvi dzēst jebkuru elementu ar nemainīgu laiku, aizstājot to ar pēdējo elementu masīvā un samazinot masīva izmēru par 1.

Tas novērš visu sekojošo elementu pārvietošanu, kas parasti aizņem lineāru laiku.

Piemērs C++:

#include <vector>

void removeAt(std::vector<int>& vec, size_t index) {
    if (index >= vec.size()) return;
    vec[index] = vec.back(); // aizvieto dzēšamo elementu ar pēdējo
    vec.pop_back();          // izņem pēdējo elementu
}