Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

предыдущая задачка, и еще одна (программистское)

Я раскрываю все скрытые комментарии с правильными решениями к позавчерашней задачке. Если хотите все еще решать ее самостоятельно, не заглядывайте в комментарии. Спасибо всем, кто решал. Первый, кто нашел оптимальное решение за O(N) времени и O(1) памяти - ilyaraz.

Вот еще одна программистская задачка. Я когда-то знал ее решение и забыл, недавно с удовольствием решил снова. Эта задачка довольно хорошо известна, и в частности часто преподается на курсах продвинутых структур данных, и упоминается в учебниках. Так что многие наверняка ее знают - если вы знаете решение, то не пишите в комментариях. Для тех, кто не знает, это отличное упражнение для ума, по-моему.

Задача: требуется воплотить массив с дефолтным значением для всех элементов, т.е. структуру данных с тремя операциями: get(i), set(i, value) и setdefault(value). Любой вызов get() с индексом, который до сих пор ни разу не передавался set(), должен возвращать последнее выставленное дефолтное значение (или 0, если такого не было). Сложность в том, что все три операции: get, set и setdefault, должны занимать O(1) времени. При этом нельзя рассчитывать на то, что отведенная нам память имеет какой-либо специальный вид, например, заполнена нулями. Любая используемая память изначально содержит случайные байты, которые мы никак не можем контролировать.
Subscribe

  • о знаменитом этюде

    Есть знаменитый шахматный этюд братьев Сарычевых (1928), с потрясающем контр-интуитивным решением. Белые начинают и делают ничью. Если хотите,…

  • первый звонок

    1 сентября 1985 года в школе, где я учился, любительская киносъемка. Где-то там я стою, вместе со своими одноклассниками из третьего "В". В кадр…

  • никита и сергей

    Любопытная история из ФБ Ильи Бера (…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 86 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

  • о знаменитом этюде

    Есть знаменитый шахматный этюд братьев Сарычевых (1928), с потрясающем контр-интуитивным решением. Белые начинают и делают ничью. Если хотите,…

  • первый звонок

    1 сентября 1985 года в школе, где я учился, любительская киносъемка. Где-то там я стою, вместе со своими одноклассниками из третьего "В". В кадр…

  • никита и сергей

    Любопытная история из ФБ Ильи Бера (…