7. Otoč spojový seznam
Dostaneš začátek (head) spojového seznamu. Otoč ho a vrať nový začátek.
Třída ListNode je už definovaná, stejně jako na LeetCode:
class ListNode { val: number; next: ListNode | null; constructor(val?: number, next?: ListNode | null);}Příklady
Vstup
head = [1, 2, 3, 4, 5]Výstup
[5, 4, 3, 2, 1]Vstup
head = [1, 2]Výstup
[2, 1]Potřebuješ tři proměnné: prev (na začátku null), cur (na začátku head) a dočasnou next. V každém kroku otoč šipku – cur.next = prev – a posuň se dál.
1function reverseList(head: ListNode | null): ListNode | null {2 let prev: ListNode | null = null;3 let cur = head;4 while (cur !== null) {5 const next = cur.next;6 cur.next = prev;7 prev = cur;8 cur = next;9 }10 return prev;11}12