Skip to content

Instantly share code, notes, and snippets.

@imranariffin
Created December 14, 2019 15:08
Show Gist options
  • Select an option

  • Save imranariffin/64e2aedde563d55f39a8211c7779a231 to your computer and use it in GitHub Desktop.

Select an option

Save imranariffin/64e2aedde563d55f39a8211c7779a231 to your computer and use it in GitHub Desktop.
Leetcode 206 - Reverse Linked List
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class SolutionIterative:
def reverseList(self, head: ListNode) -> ListNode:
prev, node, next = None, head, None
while node is not None:
next = node.next
node.next = prev
prev = node
node = next
return prev
class SolutionRecursive:
def reverseList(self, head: ListNode) -> ListNode:
return self._reverse(None, head, None)
def _reverse(self, prev: ListNode, node: ListNode, next: ListNode) -> ListNode:
if node is None:
return prev
next = node.next
node.next = prev
prev = node
node = next
return self._reverse(prev, node, next)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment