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();          // წაშლის ბოლო ელემენტს
}