Programming/leetcode
328. Odd Even Linked List
홍열
2021. 2. 15. 23:31
728x90
Linked List 순서를 홀,짝으로 구분해서 홀수 먼저 출력하고, 이후 짝수를 출력하는 문제
예를 들어, 1->2->3->4->5->NULL이면 홀수 자리는 1->3->5가 있고, 짝수 자리는 2->4가 있다,
따라서 결과 값은 1->3->5->2->4->NULL
1) 홀수와 짝수를 구분하여 넣는 Linked List를 만들고
2)홀수 마지막과 짝수 처음을 연결한다.
그림으로 설명을 해보면,
처음 odd와 even이라는 ListNode에 각 첫번째 홀수와 짝수 자리를 가르키도록 한다.
반복문이 진행때마다 2칸씩 건너뛰면서 다음 자료를 가르키도록 만들면 된다.
1) 처음에는 odd, even만 있고, while문을 통해서 계속 해서 연결해나간다.
2) 마지막에 odd와 even_first를 연결한다.
def oddEvenList(self, head: ListNode) -> ListNode:
if not head:
return None
odd = head
even = head.next
even_head = head.next
while even and even.next:
odd.next = odd.next.next
even.next = even.next.next
odd = odd.next
even = even.next
odd.next = even_head
return head