From 37a2d392699b0bb54428291e9ae0b6ea0803c4b9 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Wed, 14 Oct 2026 11:04:16 -0400 Subject: [PATCH] =?UTF-8?q?docs(docs):=20add=20143=E2=80=AFReorder?= =?UTF-8?q?=E2=80=AFList=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linked-list/143_reorder-list.mdx | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 apps/docs/content/(02-nodal-grid)/linked-list/143_reorder-list.mdx diff --git a/apps/docs/content/(02-nodal-grid)/linked-list/143_reorder-list.mdx b/apps/docs/content/(02-nodal-grid)/linked-list/143_reorder-list.mdx new file mode 100644 index 0000000..925f7fd --- /dev/null +++ b/apps/docs/content/(02-nodal-grid)/linked-list/143_reorder-list.mdx @@ -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 +```