연결 리스트를 홀수 노드 다음에 짝수 노드가 오도록 재구성
"""
INPUT: 1 2 3 4 5
OUTPUT: 1 3 5 2 5
"""
def oddEvenList(self, head: ListNode) -> ListNode:
if head is None:
return None
# 홀수만 모으기 위한 헤드
# 1 -> 2 -> 3 -> 4 -> 5
odd = head
# 짝수만 모으기 위한 헤드
# 2 -> 3 -> 4 -> 5
even = head.next
even_head = head.next
while even and even_head:
# 짝수번째에 다음 홀수번째 값을 할당한다
# - odd.next = 1 -> 3 -> 4 -> 5
# - odd.next = 5
odd.next = odd.next.next
# 다음 홀수번째 노드로 이동
# - odd = 3 -> 4 -> 5
# - odd = 5
odd = odd.next
# - even = 2 -> 4 -> 5
# - even = 4 -> None
even.next = even.next.next
# 다음 짝수번째 노드로 이동
# - even = 4 -> 5
# - even = None
even = even.next
# 짝수번째 노드만 모은 헤드를 붙인다
odd.next = even_head
return head