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