파이썬 알고리즘 인터뷰 문제 18번(리트코드 328번) Odd Even Linked List
https://leetcode.com/problems/odd-even-linked-list/
# 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]:
if not head or not head.next:
return head
odd = head
even = head.next
even_head = head.next
curr = head.next.next
while curr and curr.next:
odd.next = curr
even.next = curr.next
odd = odd.next
even = even.next
curr = curr.next.next
if curr:
odd.next = curr
odd = odd.next
odd.next = even_head
even.next = None # 처음에 이 부분 빠트려서 루프 생김.
return head
# 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]:
if not head:
return head
odd = head
even = head.next
even_head = even
while even and even.next:
odd.next, even.next = odd.next.next, even.next.next
odd, even = odd.next, even.next
odd.next = even_head
return head
None 을 가르키는 지 확인해야 한다. 그렇지 않으면 루프가 생길 수 있다.