File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Question Link: https://leetcode.com/problems/odd-even-linked-list/
3
+ * Primary idea: Prev-post two pointers; change the prev and move both at a time
4
+ * Time Complexity: O(n), Space Complexity: O(1)
5
+ *
6
+ * Definition for singly-linked list.
7
+ * public class ListNode {
8
+ * public var val: Int
9
+ * public var next: ListNode?
10
+ * public init(_ val: Int) {
11
+ * self.val = val
12
+ * self.next = nil
13
+ * }
14
+ * }
15
+ */
16
+
17
+ class OddEvenLinkedList {
18
+ func oddEvenList( _ head: ListNode ? ) -> ListNode ? {
19
+ guard head != nil && head!. next != nil else {
20
+ return head
21
+ }
22
+
23
+ let evenHead = head!. next
24
+ var p = head
25
+ var q = evenHead
26
+ var isEndEven = true
27
+
28
+ while q!. next != nil {
29
+ let node = q!. next
30
+
31
+ p!. next = node
32
+
33
+ p = q
34
+ q = node
35
+ isEndEven = !isEndEven
36
+ }
37
+
38
+ if isEndEven {
39
+ p!. next = evenHead
40
+ } else {
41
+ p!. next = nil
42
+ q!. next = evenHead
43
+ }
44
+
45
+ return head
46
+ }
47
+ }
You can’t perform that action at this time.
0 commit comments