Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads
Post #1531
792

Задача: 61. Rotate List
Сложность: medium
Дан указатель на начало связного списка, поверните список вправо на k позиций.
Пример:
👨💻 Алгоритм:
1️⃣Найдите старый хвост и соедините его с головой (old_tail.next = head), чтобы замкнуть кольцо. Одновременно вычислите длину списка n.
2️⃣Найдите новый хвост, который находится на позиции (n - k % n - 1) от головы, и новую голову, которая находится на позиции (n - k % n).
3️⃣Разорвите кольцо (new_tail.next = None) и верните new_head.
😎 Решение:
Ставь 👍 и забирай 📚 Базу знаний
Сложность: medium
Дан указатель на начало связного списка, поверните список вправо на k позиций.
Пример:
Input: head = [0,1,2], k = 4
Output: [2,0,1]
👨💻 Алгоритм:
1️⃣Найдите старый хвост и соедините его с головой (old_tail.next = head), чтобы замкнуть кольцо. Одновременно вычислите длину списка n.
2️⃣Найдите новый хвост, который находится на позиции (n - k % n - 1) от головы, и новую голову, которая находится на позиции (n - k % n).
3️⃣Разорвите кольцо (new_tail.next = None) и верните new_head.
😎 Решение:
var rotateRight = function (head, k) {
if (head == null) return null;
if (head.next == null) return head;
let old_tail = head;
let n;
for (n = 1; old_tail.next != null; n++) old_tail = old_tail.next;
old_tail.next = head;
let new_tail = head;
for (let i = 0; i < n - (k % n) - 1; i++) new_tail = new_tail.next;
let new_head = new_tail.next;
new_tail.next = null;
return new_head;
};Ставь 👍 и забирай 📚 Базу знаний





