1234567891011121314151617181920212223242526272829 |
- /**
- * 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
- }
|