Junior — Middle
Ինչպե՞ս կարելի է իրականացնել ցանկացած տարր զանգվածից (վեկտորից) հեռացում ժամանակի ընթացքում, եթե տարրերի կարգը կարևոր չէ։
sobes.tech AI
Պատասխան AI-ից
Եթե զանգվածի (վեկտորի) տարրերի կարգը կարևոր չէ, ապա կարելի է ցանկացած տարր հեռացնել կայուն ժամանակում, փոխարինելով այն զանգվածի վերջին տարրով և ապա նվազեցնելով զանգվածի չափը 1-ով:
Այսպիսով, խուսափում է բոլոր հաջորդող տարրերի տեղափոխումից, ինչը սովորաբար պահանջում է գծային ժամանակ:
C++ օրինակ՝
#include <vector>
void removeAt(std::vector<int>& vec, size_t index) {
if (index >= vec.size()) return;
vec[index] = vec.back(); // փոխարինում է հեռացվող տարրն վերջինով
vec.pop_back(); // հեռացնում է վերջին տարրն
}