# 문제 설명
- 연결리스트 인덱스가 홀수인 연결 리스트와 짝수인 연결리스트를 구분한 뒤, 홀수 연결리스트 뒤에 짝수 연결리스트를 붙이는 문제이다.
- 공간복잡도가 O(N)이므로
ListNode
객체 생성에는 부담 없음 - 참조관계만 적절히 설정하면 되는 문제
/**
* Definition for singly-linked list.
* public class ListNode {
* public var val: Int
* public var next: ListNode?
* public init() { self.val = 0; self.next = nil; }
* public init(_ val: Int) { self.val = val; self.next = nil; }
* public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
* }
*/
class Solution {
func oddEvenList(_ head: ListNode?) -> ListNode? {
guard let head else { return nil }
guard let next = head.next else { return head }
var idx = 1
var cur: ListNode? = head
var oddHead = ListNode(head.val)
var evenHead = ListNode(next.val)
var oddCur: ListNode? = oddHead
var evenCur: ListNode? = evenHead
while(cur != nil) {
if idx > 2 {
if idx % 2 == 1 {
oddCur?.next = ListNode(cur!.val)
oddCur = oddCur?.next
} else {
evenCur?.next = ListNode(cur!.val)
evenCur = evenCur?.next
}
}
cur = cur?.next
idx += 1
}
oddCur?.next = evenHead
return oddHead
}
}