|
@@ -0,0 +1,29 @@
|
|
|
+/**
|
|
|
+ * Definition for singly-linked list.
|
|
|
+ * type ListNode struct {
|
|
|
+ * Val int
|
|
|
+ * Next *ListNode
|
|
|
+ * }
|
|
|
+ */
|
|
|
+func oddEvenList(head *ListNode) *ListNode {
|
|
|
+ if head == nil || head.Next == nil {
|
|
|
+ return head
|
|
|
+ }
|
|
|
+ odd, even := head, head.Next
|
|
|
+ prev, slow, fast := odd, odd, even
|
|
|
+ for fast != nil && slow != nil {
|
|
|
+ slow.Next = fast.Next
|
|
|
+ if fast.Next != nil {
|
|
|
+ fast.Next = fast.Next.Next
|
|
|
+ }
|
|
|
+ fast = fast.Next
|
|
|
+ prev = slow
|
|
|
+ slow = slow.Next
|
|
|
+ }
|
|
|
+ if slow == nil {
|
|
|
+ prev.Next = even
|
|
|
+ } else {
|
|
|
+ slow.Next = even
|
|
|
+ }
|
|
|
+ return odd
|
|
|
+}
|