p132 奇偶链表(leetcode 328)

一:解题思路

Time:O(n),Space:O(1)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    ListNode* oddEvenList(ListNode* head) 
    {
        if (head == NULL || head->next == NULL || head->next->next == NULL) return head;
        ListNode* evenHead = head->next;
        ListNode* odd = head;
        ListNode* even = evenHead;
        while (even != NULL && even->next != NULL)
        {
            odd->next = even->next;
            odd = odd->next;
            even->next = odd->next;
            even = even->next;
        }

        odd->next = evenHead;

        return head;
    }
};

Java:

class Solution {
        public ListNode oddEvenList(ListNode head)
        {
              if(head==null || head.next==null || head.next.next==null)
                  return head;
              ListNode evenHead=head.next;
              ListNode odd=head;
              ListNode even=evenHead;
              while (even!=null && even.next!=null)
              {
                  odd.next=even.next;
                  odd=odd.next;
                  even.next=odd.next;
                  even=even.next;
              }
              odd.next=evenHead;
              
              return head;
        }
    }

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12707186.html