Кресты / Говнокод #26453 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
Задачка с собеседования.

Удалить из неупорядоченного массива чисел представленного как std::vector<int> элемент за O(1).

А я тупил, и дошел до ответа только с подсказками.

Запостил: OlegUP OlegUP, (Updated )

Комментарии (75) RSS

      • Отправил комментарий до обновления страницы и уточнения задачи не увидел. Исходной задаче решение полностью соответствует:
        >>> Удалить из неупорядоченного массива чисел представленного как std::vector<int> элемент за O(1).
        Ответить
        • Подтверждаю. Перечитал исходую задачу, перечитал решение. Всё чётко.
          Ответить
          • Ладно, но мы то знаем, что нужно удалить любой элемент, за О(1).
            Скажем, если элемент выбирается случайно.
            Ответить
            • Так он и удалит любой элемент, какой мы случайно запишем в конец вектора.
              Ответить
      • Да. Код удаляет из конца вектора любой последний элемент.
        Ответить
        • Ты натолкнул меня на правильный ответ: vec.clear()
          Удаляет вообще все элементы, в.т.ч. нужный.
          Ответить
            • Ну как бы и есть О(1), но нужно удалить элемент, а не все элементы.
              Ответить
            • Откуда О(n)?
              size=0 и заебца, это же тебе не жаба, где нужно занулять
              Ответить
              • ничего не надо занулять в жабе.
                void a() {
                List<Hui> hui = new ArrayList<>();
                hui.add(new Hui());
                hui.add(new Hui());
                hui.add(new Hui());
                } // Очищаю за O(1), дальше говно гц подберет
                Ответить
                  • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
                    Ответить
                    • ВЕКТОРА НЕ СУЩЕСТВУЕТ, ЭТО АБСТРАКЦИЯ
                      ЕСТЬ ТОЛЬКО ЭЛЕМЕНТАРНЫЕ ЧАСТИЦЫ, ИЗ КОТОРЫХ СОСТОИТ ОЗУ
                      Ответить
            • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
              Ответить
    • Я вот не крестоблядь, но в cppref прочитал
      [qute]
      The elements are stored contiguously, which means that elements can be accessed not only through iterators, but also using offsets to regular pointers to elements
      [/qute]

      НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
      идите нахуй.
      Вот мой ответ
      Ответить
  • Хуйня какая-то. Видимо ждали ответа, что это невозможно.
    Ответить
  • Удаление произвольного элемента. Работает только на x86 (точнее, на платформах с sizeof(int) == sizeof(intptr_t)). O(1).
    int main()
    {
        std::vector<int> vec;
        for (auto && x : { 1,2,3,4,5,6,7,8,9,10 }) {
            vec.push_back(reinterpret_cast<int>(new int));
            *reinterpret_cast<int*>(vec.back()) = x;
        }
    
        vec[6] = reinterpret_cast<int>(nullptr);  // удалить седьмой элемент
    
        std::cout << "[";
        for (auto && it = vec.begin(); it != vec.end(); ++it) {
            auto && itPtr = reinterpret_cast<int*>(*it);
            if (itPtr) {
                std::cout << *itPtr;
                if (it != vec.end() - 1) {
                    std::cout << ", ";
                } else {
                    std::cout << "]";
                }
            }
        }
        // [1, 2, 3, 4, 5, 6, 8, 9, 10]
    
        for (auto && x : vec) {
            auto xPtr = reinterpret_cast<int *>(x);
            if (xPtr) {
                delete xPtr;
            }
        }
        return EXIT_SUCCESS;
    }
    Ответить
    • Я тоже думал null записать. Но решение весьма условное и с кучей ворнингов.

      Кмк, изящнее pop_back нет ничего.
      Ответить
      • Я не понял твоё решение с pop_back, можешь пояснить?
        Ответить
        • Это не моё решение.

          >Удалить из неупорядоченного массива std::vector<int> элемент за O(1).

          Ну вот gost и удалил последний элемент.
          Ответить
          • Ниже было уточнение, что удалять нужно произвольный, а не только последний.
            Ответить
            • Ну правильно, код удалит произвольный элемент из конца вектора.
              Ответить
              • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
                Ответить
                • приведи реальный пример, где необходимо «несуществование неупорядоченного вектора»
                  Ответить
      • Так тут внутри вектора хранятся указатели, скащенные к интам (чтобы задаче соответствовать), а уже внутри укококозателей лежат любые числа.

        Но да, pop_back() — самое адекватное решение.

        Какая задача — такой и ответ.
        Ответить
        • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
          Ответить
  • vec[pituz] = vec.back();
    vec.pop_back();

    Я подобной питушнёй страдал в школьное время, когда на поцкале генерировал случайные перестановки какой-то питушни.
    Ответить
    • Похоже на правду. Нужно было угадать условие задачи.
      Ответить
      • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
        Ответить
    • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
      Ответить
        • дибил не знает разницы между вектором и сетом. Сразу видно, что математику он не учил: строго по заветам сёмы
          Ответить
            • Сет — бог-воин с красными жгучими глазами, единственный из всех, кто способен одолеть во тьме змея Апопа, олицетворяющего мрак и жаждущего поработить Ра в тёмных глубинах подземного Нила.
              Ответить
              • Я - Баст, богиня и владычица! Слава Амону-Ра, творцу всего сущего! Я - грозная богиня, дочь Солнца, повелительница звезд; молния - сверкание моих глаз, гром - мой голос; когда я шевелю усами, трясётся земля, а хвост мой - лестница в небо.
                Ответить
  • Что такое «неупорядоченного»?
    Ответить
  • НЕУПОРЯДОЧЕННОГО ВЕКТОРА НЕ СУЩЕСТВУЕТ
    Ответить
    • ВЕКТОРА НЕ СУЩЕСТВУЕТ, ЭТО АБСТРАКЦИЯ
      ЕСТЬ ТОЛЬКО ЭЛЕМЕНТАРНЫЕ ЧАСТИЦЫ, ИЗ КОТОРЫХ СОСТОИТ ОЗУ
      Ответить
      • Неупорядоченного вектора на свалке не существует так тут туши пердак бамп отсосу внутри вектора.
        Ответить
  • Как у меня бомбит с питущка, который напейсал, что неупорядоченного вектора не существует. Человек волен придумывать любые математические абстракции, на которые хватит воображения.
    Ответить
  • я принял решение больше никогда не «удалять произвольный элемент из вектора»
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8