---
round: 1
date: 2026-09-12
pool: all-32
order: [31, 24, 11, 16, 3, 4, 21, 5, 23, 8, 25, 12, 32, 9, 20, 18, 17, 27, 28, 10, 19, 22, 2, 26, 1, 30, 6, 7, 29, 13, 15, 14]
tickets_total: 32
tickets_answered: 32
status: completed
score_total: 60
score_max: 96
---

# Раунд 1 — 2026-09-12

> **Гигиена:** до конца раунда этот файл не открывать — в `order` лежит весь порядок билетов.

## Порядок

Глобальные номера задач в порядке предъявления:

```
31 24 11 16 3 4 21 5 23 8 25 12 32 9 20 18 17 27 28 10 19 22 2 26 1 30 6 7 29 13 15 14
```

## Итоговая таблица

| Билет | Глобальный № | Задача | Тема | Балл | Вердикт |
|-------|--------------|--------|------|------|---------|
| 01 | 31 | Add Strings | Math / String | 2 | 🟡 partial |
| 02 | 24 | Top K Frequent Words | Heap / Hash | 2 | 🟡 partial |
| 03 | 11 | Subarray Sum Equals K | Hash Table | 1 | 🔴 failed |
| 04 | 16 | Peeking Iterator | Iterator | 2 | 🟡 partial |
| 05 | 3 | Squares of a Sorted Array | Two Pointers | 2 | 🟡 partial |
| 06 | 4 | Summary Ranges | Two Pointers | 2 | 🟡 partial |
| 07 | 21 | Reverse Linked List | Linked Lists | 2 | 🟡 partial |
| 08 | 5 | Find All Anagrams in a String | Hash Table | 2 | 🟡 partial |
| 09 | 23 | Remove Invalid Parentheses | DFS / BFS | 2 | 🟡 partial |
| 10 | 8 | Two Sum | Hash Table | 1 | 🔴 failed |
| 11 | 25 | Binary Search | Binary Search | 2 | 🟡 partial |
| 12 | 12 | Merge Intervals | Sort | 2 | 🟡 partial |
| 13 | 32 | Multiply Strings | Math / String | 2 | 🟡 partial |
| 14 | 9 | Group Anagrams | Hash Table | 2 | 🟡 partial |
| 15 | 20 | Merge k Sorted Lists | Linked Lists | 1 | 🔴 failed |
| 16 | 18 | Best Time to Buy and Sell Stock II | Greedy | 2 | 🟡 partial |
| 17 | 17 | Best Time to Buy and Sell Stock | Greedy | 1 | 🔴 failed |
| 18 | 27 | Symmetric Tree | Tree | 2 | 🟡 partial |
| 19 | 28 | Subtree of Another Tree | Tree | 2 | 🟡 partial |
| 20 | 10 | Valid Anagram | Hash Table | 2 | 🟡 partial |
| 21 | 19 | Best Time with Transaction Fee | Greedy | 2 | 🟡 partial |
| 22 | 22 | Number of Islands | DFS / BFS | 2 | 🟡 partial |
| 23 | 2 | Partition Labels | Two Pointers | 2 | 🟡 partial |
| 24 | 26 | Same Tree | Tree | 2 | 🟡 partial |
| 25 | 1 | Container With Most Water | Two Pointers | 2 | 🟡 partial |
| 26 | 30 | Add Binary | Math / String | 2 | 🟡 partial |
| 27 | 6 | Permutation in String | Hash Table | 2 | 🟡 partial |
| 28 | 7 | Single Number | Hash Table | 2 | 🟡 partial |
| 29 | 29 | Find Duplicate Subtrees | Tree | 2 | 🟡 partial |
| 30 | 13 | Valid Parentheses | Queue / Stack | 2 | 🟡 partial |
| 31 | 15 | Sliding Window Maximum | Sliding Window | 2 | 🟡 partial |
| 32 | 14 | Sliding Window Median | Sliding Window | 2 | 🟡 partial |

**Итого: 60 / 96, средний балл 1.88.** Пройдено на 3 — 0, частично (2) — 28, провалено (0–1) — 4.

## Разбивка по темам

| Тема | Билетов | Сумма | Средний | Комментарий |
|------|---------|-------|---------|-------------|
| Two Pointers | 4 | 8 | 2.00 | идеи верные; сложность и edge cases не назывались |
| Hash Table | 7 | 12 | 1.71 | худшая тема: провалы в Two Sum и Subarray Sum Equals K |
| Sort | 1 | 2 | 2.00 | Merge Intervals: не проговорена обязательная сортировка до прохода |
| Queue / Stack | 1 | 2 | 2.00 | Valid Parentheses верно, нет проверки пустого стека |
| Sliding Window | 2 | 4 | 2.00 | обе Hard решены по идее, но не каноническим способом (куча вместо deque) |
| Iterator | 1 | 2 | 2.00 | перепутано, кто наполняет кэш — peek или next |
| Greedy | 3 | 5 | 1.67 | Best Time I провален, комиссия в Best Time III разобрана неуверенно |
| Linked Lists | 2 | 3 | 1.50 | худшая тема: Merge k — линейный поиск вместо heap / попарного слияния |
| DFS / BFS | 2 | 4 | 2.00 | Number of Islands: не названа ловушка рекурсии в Ruby |
| Heap / Hash | 1 | 2 | 2.00 | Top K: идея верна, апгрейд до O(n log k) назван |
| Binary Search | 1 | 2 | 2.00 | граница цикла while l <= r названа неточно |
| Tree | 4 | 8 | 2.00 | все четыре идеи верные; edge cases разобраны только в Symmetric Tree |
| Math / String | 3 | 6 | 2.00 | сложение столбиком везде верно, не проговорены разная длина и лишний перенос |
| **Итого** | **32** | **60** | **1.88** | |

## Что показал раунд

**Сильное.** В 28 из 32 билетов верно определена идея и структура данных. Уверенно: Two Pointers (все 4), деревья (все 4), DFS/BFS, скользящее окно по идее, сложение строк столбиком.

**Главный системный пробел.** Ни одного ответа на 3. Ни в одном билете не были одновременно названы сложность по времени и памяти и граничные случаи. Идея называлась почти всегда, «время/память + 2–3 edge case» — почти никогда. На интервью проверяют именно вторую половину, поэтому при верных идеях ответы звучат неполно.

**Четыре провала:**

- **#11 Subarray Sum Equals K** — предложено скользящее окно. При отрицательных числах (они разрешены ограничениями) окно не работает, и задача про *количество* подмассивов. Нужны префиксные суммы + hash со счётчиком.
- **#8 Two Sum** — хэш комплементов предподсчитан по всем элементам, поэтому элемент находит сам себя: `[3,2,4], target=6` даёт `[0,0]`. Нужен один проход с проверкой до вставки.
- **#20 Merge k Sorted Lists** — линейный поиск минимума даёт O(N·k); задача просит O(N log k) (min-heap или попарное слияние).
- **#17 Best Time to Buy and Sell Stock** — не найден `min_price`; сам вопрос сформулирован правильно, но ответа нет.

**Дорогое решение.** **#15 Sliding Window Maximum** решён через кучу с ленивым удалением — рабочее, но не каноническое: ожидается монотонная deque (O(n), реализуется массивом без гемов). В Ruby для кучи нужна ручная реализация — лишний риск и время на интервью.

**Проскочившие follow-up'ы.** Unicode в Valid Anagram, обоснование O(1) по памяти в Single Number, улучшение Subtree of Another Tree, ловушка рекурсии по глубине стека в Number of Islands.

## На повтор

**Приоритет 1 (провалы, глобальные номера):** 8 Two Sum · 11 Subarray Sum Equals K · 17 Best Time I · 20 Merge k Sorted Lists.

**Приоритет 2 (идея верна, но не доведена до канона):** 9 Group Anagrams (не назван ключ: sorted string или частотный массив) · 15 Sliding Window Maximum (монотонная deque) · 14 Sliding Window Median (правило вставки в кучи + ребаланс) · 16 Peeking Iterator (peek наполняет кэш, next его отдаёт) · 19 Best Time with Fee (где именно вычитается комиссия) · 22 Number of Islands (итеративный DFS вместо рекурсии).

**Приоритет 3 (мелкие, но частые на интервью):** 31 Add Strings и 30 Add Binary (разная длина строк и остаточный перенос) · 32 Multiply Strings (единый массив результата) · 12 Merge Intervals (сортировка по началу обязательна) · 25 Binary Search (while l <= r) · 3 Squares (заполнять результат с конца) · 4 Summary Ranges (закрыть последний диапазон) · 13 Valid Parentheses (пустой стек) · 6 Permutation in String (ранний выход при |s1| > |s2|) · 10 Valid Anagram (равная длина и Unicode).

По правилу раундов в R2 идут все задачи с лучшим баллом < 3 — то есть все 32; порядок повтора — по этому списку приоритетов.
