> Как реализовать функцию вставки и удаления элементов в структуре данных (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Meta
Стек: iOS, Swift
> Пример ответа
Для реализации вставки и удаления элементов в структуре данных на Swift (iOS) можно использовать класс с массивом в качестве хранилища. Вот пример для динамического массива:
SWIFTclass DynamicArray<T> {private var elements: [T] = []// Вставка элемента по индексуfunc insert(_ element: T, at index: Int) {guard index >= 0 && index <= elements.count else {fatalError("Index out of bounds")}elements.insert(element, at: index)}// Удаление элемента по индексу@discardableResultfunc remove(at index: Int) -> T {guard index >= 0 && index < elements.count else {fatalError("Index out of bounds")}return elements.remove(at: index)}// Вставка в началоfunc prepend(_ element: T) {elements.insert(element, at: 0)}// Вставка в конецfunc append(_ element: T) {elements.append(element)}// Удаление первого элемента@discardableResultfunc removeFirst() -> T? {guard !elements.isEmpty else { return nil }return elements.removeFirst()}// Удаление последнего элемента@discardableResultfunc removeLast() -> T? {return elements.popLast()}var count: Int { elements.count }var isEmpty: Bool { elements.isEmpty }}
Ключевые моменты:
- Используются встроенные методы
Arrayдля вставки/удаления (O(n) для произвольной позиции, O(1) для конца) - Добавлены проверки границ для безопасности
@discardableResultпозволяет игнорировать возвращаемое значение при удалении- Для iOS-приложений такая структура подходит для управления списками в
UITableView/UICollectionViewс анимациями
Для более сложных сценариев (частые вставки/удаления в середине) лучше использовать связный список или дерево.
> Похожие задачи по mobile
В чем разница между захватом переменной в closure и копированием
Сколько разработчиков в команде, на каких языках они работают и как устроена команда
Какая упорядоченность у Map в Kotlin и существуют ли реализации, сохраняющие порядок элементов
Как реализовать синглтон в Kotlin
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью