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
Time: O(n)
Space: O(1)
lessDummy для элементов <x, greaterDummy для элементов >=x. Они помогут удобно собирать списки без отдельной обработки первого элемента
x — цепляем его в список less и передвигаем данный указательx — цепляем его в список greater и также передвигаем данный указатель Please open Telegram to view this post
VIEW IN TELEGRAM
92. Reverse Linked List II
Company:
#leetcode92 | #medium #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
Time: O(n)
Space: O(1)
[left, right], поэтому ведем подсчет узлов (n) и, если n стал равен left, применяем данный алгоритм, пока n меньше rightn < left, ведем вспомогательный узел dummy, который остановится прямо перед leftdummy, теперь можно выставить нужные ссылки — узел left ссылаем на следующий после right: dummy.next.next = curr, а узел перед left ссылаем на right: dummy.next = prevleft > 1, иначе dummy.next, так как голова списка в таком случае также будет измененаPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Пример:
head = [1,2,3,4,5], left = 2, right = 4#figure #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Теперь доступен отдельный канал JA Roadmap c полной навигацией по всем задачам.
В нем можно очень удобно повторять нужные темы, сразу переходя к постам.
Вскоре еще добавится полная RoadMap по самым нужным задачам для прохождения собеседования, а также топ задач в конкретные компании
Не пропускайте
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
148. Sort List
Company:
#leetcode148 | #medium #linkedlist
Please open Telegram to view this post
VIEW IN TELEGRAM