Sobes.tech
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();          // հեռացնում է վերջին տարրն
}