diff --git a/apps/docs/content/(linked-list)/206-reverse-linked-list.mdx b/apps/docs/content/(linked-list)/206-reverse-linked-list.mdx new file mode 100644 index 0000000..76f547d --- /dev/null +++ b/apps/docs/content/(linked-list)/206-reverse-linked-list.mdx @@ -0,0 +1,50 @@ +--- +title: '206. Reverse Linked List' +description: Given the head of a singly linked list, reverse the list, and return the reversed list +sidebar: + label: 'Reverse Linked List' + badge: 'Easy' +--- + +Linked List + +::::warning +A linked list can be reversed either iteratively or recursively. Could you implement both? +:::: + +### Example 1: +- Input: `head = [1,2,3,4,5]` +- Output: `[5,4,3,2,1]` + +### Example 2: +- Input: `head = [1,2]` +- Output: `[2,1]` + +### Example 3: +- Input: `head = []` +- Output: `[]` + +### Constraints: + +- The number of nodes in the list is the range [0, 5000]. +- `-5000 <= Node.val <= 5000` + +## 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 reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: + prev = None + curr = head + while curr: + next_ = curr.next + curr.next = prev + prev = curr + curr = next_ + return prev +```