docs(docs): add 143 Reorder List documentation

This commit is contained in:
Prad Nukala committed 2026-10-14 11:04:16 -04:00
1 parent a7ab989d57
commit 37a2d39269
1 file changed
+61
@@ -0,0 +1,61 @@
---
title: '143. Reorder List'
description: 'You are given the head of a singly linked-list. The list can be represented as:'
icon: dot
topics:
- { name: "Linked List", slug: "linked-list" }
- { name: "Two Pointers", slug: "two-pointers" }
- { name: "Stack", slug: "stack" }
- { name: "Recursion", slug: "recursion" }
issue: "https://github.com/prdlk/leetcode/issues/81"
sidebar:
label: 'Reorder List'
badge: 'Medium'
---
### Example 1:
- Input: `head = [1,2,3,4]`
- Output: `[1,4,2,3]`
### Example 2:
- Input: `head = [1,2,3,4,5]`
- Output: `[1,5,2,4,3]`
### Constraints:
- The number of nodes in the list is in the range [1, 5 * 10^4].
- `1 <= Node.val <= 1000`
## Solution
```py
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reorderList(self, head: ListNode | None) -> None:
# Find middle
slow, fast = head, head.next
while fast and fast.next:
slow = slow.next
fast = fast.next.next
# Reverse second half
second = slow.next
prev = slow.next = None
while second:
tmp = second.next
second.next = prev
prev = second
second = tmp
# merge two halfs
first, second = head, prev
while second:
tmp1, tmp2 = first.next, second.next
first.next = second
second.next = tmp1
first, second = tmp1, tmp2
```