C
C/C++ | LeetCode
@easy_c_plus_task3.3K подп.
231просмотров
7.0%от подписчиков
20 марта 2026 г.
statsScore: 254
Задача: 341. Flatten Nested List Iterator Сложность: medium Вам дан вложенный список целых чисел nestedList. Каждый элемент либо является целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками. Реализуйте итератор для его развёртки. Реализуйте класс NestedIterator: NestedIterator(List<NestedInteger> nestedList) Инициализирует итератор вложенным списком nestedList. int next() Возвращает следующий целый элемент вложенного списка. boolean hasNext() Возвращает true, если в вложенном списке еще остались целые числа, и false в противном случае. Пример: Input: nestedList = [[1,1],2,[1,1]] Output: [1,1,2,1,1] Explanation: By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1]. 👨‍💻 Алгоритм: 1⃣Инициализация Сохраняйте исходный вложенный список в стеке или очереди. Используйте стек для сохранения состояния итерации по вложенным спискам. 2⃣Метод next() Возвращает следующий целый элемент из стека или очереди. Если текущий элемент является списком, развёртывайте его и добавляйте элементы в стек. 3⃣Метод hasNext() Проверяет, есть ли в стеке или очереди оставшиеся целые элементы. Если на вершине стека находится список, развёртывайте его до тех пор, пока не встретится целый элемент. 😎 Решение: class NestedIterator { public: NestedIterator(vector<NestedInteger> &nestedList) { flatten(nestedList); } int next() { return stack.back().getInteger(); } bool hasNext() { while (!stack.empty() && !stack.back().isInteger()) { auto ni = stack.back(); stack.pop_back(); flatten(ni.getList()); } return !stack.empty(); } private: void flatten(const vector<NestedInteger> &nestedList) { for (auto it = nestedList.rbegin(); it != nestedList.rend(); ++it) { stack.push_back(*it); } } vector<NestedInteger> stack; }; Ставь 👍 и забирай 📚 Базу знаний
231
просмотров
2015
символов
Да
эмодзи
Нет
медиа

Другие посты @easy_c_plus_task

Все посты канала →
Задача: 341. Flatten Nested List Iterator Сложность: medium — @easy_c_plus_task | PostSniper