1106. Parsing A Boolean Expression
Company:
Выражение состоит из:
#leetcode1106 | #hard #stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
Please open Telegram to view this post
VIEW IN TELEGRAM
1944. Number of Visible People in a Queue
Company:
Человек может видеть другого человека справа от себя, если все люди между ними имеют меньший рост, чем и он сам, и тот, кого он видит.
Верните массив result, где result[i] — количество людей, которых человек на позиции i может видеть справа от себя
#leetcode1944 | #hard #stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
Please open Telegram to view this post
VIEW IN TELEGRAM
768. Max Chunks To Make Sorted II
Company:
Необходимо разбить его на несколько непрерывных фрагментов, отсортировать каждый из них по отдельности, а затем соединить обратно в один массив. Если итоговый массив получается полностью отсортированным, такое разбиение считается допустимым.
Найдите максимальное количество таких фрагментов, при котором выполняется условие
#leetcode768 | #hard #stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
➖ пока текущий элемент меньше вершины стека, то есть он нарушает условие порядка фрагментов, мы удаляем элементы из стека (расширяем предыдущий фрагмент)➖ если текущий элемент больше или равен текущему максимуму, значит мы можем начать новый фрагмент:▫ кладем в стек currMax и обновляем его на текущий элемент
Please open Telegram to view this post
VIEW IN TELEGRAM
224. Basic Calculator
Company:
Верните результат выражения
#leetcode224 | #hard #stack
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(n)
Please open Telegram to view this post
VIEW IN TELEGRAM
Представь очередь за билетами на концерт. Каждый человек знает, кто следующий и никто не оглядывается назад.
Если ты решаешь пропустить вперёд своего друга, ты просто говоришь: "Я теперь за тобой", а он запоминает, кто должен быть следующим. Так работает вставка — связи между людьми меняются, но сама очередь не двигается.
Если человек перед тобой уходит, ты просто запоминаешь следующего за ним — это и есть удаление.
А вот если ты пришёл в конец очереди и хочешь найти друга где-то в середине, тебе придётся пройти ее всю по порядку, спрашивая каждого: "Кто следующий?", пока не дойдёшь до нужного человека. Потому что в этой очереди никто не пронумерован — доступ возможен только шаг за шагом. Так работает поиск.
В задачах класс односвязного списка представлен как:
public class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}Каждый элемент состоит из двух частей: значение и ссылка на следующий узел
Список начинается с одного элемента — головы, именно с неё начинается обход всего списка
Нельзя просто взять и перейти сразу, например, к пятому элементу. Нужно идти от головы, шаг за шагом — пока не дойдёшь. Это похоже на то, как ты читаешь книгу — перелистывая страницу за страницей
Сначала надо дойти до нужного места, затем поменять ссылки
Похоже на вставку: находишь нужный узел и просто перенаправляешь ссылку предыдущего элемента мимо него, на следующий
#linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
876. Middle of the Linked List
Company:
#leetcode876 | #easy #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
Please open Telegram to view this post
VIEW IN TELEGRAM
203. Remove Linked List Elements
Company:
#leetcode203 | #easy #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
Please open Telegram to view this post
VIEW IN TELEGRAM
160. Intersection of Two Linked Lists
Company:
Попробуйте написать решение, используя O(1) памяти
#leetcode160 | #easy #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n + m)
Space: O(1)
➖ создаем два указателя: currA и currB и одновременно передвигаем их вперед➖ если один указатель дошёл до конца своего списка, он переходит в начало другого. То есть currA сначала проходит список A, затем список B, а currB наоборот➖ если указатель равны, прекращаем цикл и возвращаем ответ
a + b, а currB b + aa + b, поэтому списки гарантированно синхронизируются по длине и указатели либо встречаются в точке пересечения, либо оба становятся nullPlease open Telegram to view this post
VIEW IN TELEGRAM
24. Swap Nodes in Pairs
Company:
#leetcode24 | #medium #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
prev -> 1 -> 2 -> 3:prev -> 2 1 -> 3prev -> 2 -> 1 -> 3Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
61. Rotate List
Company:
#leetcode61 | #medium #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
Please open Telegram to view this post
VIEW IN TELEGRAM
86. Partition List
Company:
Необходимо сохранить исходный относительный порядок узлов в каждом из двух разделов
#leetcode86 | #medium #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM