Time: 0 ms (100%), Space: 19 MB (94.49%) - LeetHub

This commit is contained in:
Deven
2025-11-26 17:18:01 -05:00
parent 49c8ea6771
commit f6481508e2
@@ -0,0 +1,50 @@
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
"""
Complexities:
Time: O(n)
Space: O(1)
where n = len(head)
"""
# If len(head) <= 2, already sorted
if not head or not head.next:
return head
oddHead = head
oddTail = head
evenHead = head.next
evenTail = head.next
currNode = head.next.next
isOddIndex = True
# Set tail.next = None
oddTail.next = None
evenTail.next = None
# Separate list into odd list and even list
while currNode:
nextNode = currNode.next
currNode.next = None
if isOddIndex:
oddTail.next = currNode
oddTail = currNode
else:
evenTail.next = currNode
evenTail = currNode
currNode = nextNode
isOddIndex = not isOddIndex
# Attach both lists
oddTail.next = evenHead
return oddHead