leetcode 328 奇偶链表

 

更新代码:

开头检测是否需要调整(是否具有第三个节点)

使用三个ListNode* 变量记录奇偶链表的头尾headA,tailA为奇链表,headB为偶数链表,由于只需要最后令tailA->next=headB因此不需要tailB。

使用两个ListNode* 变量来进行遍历,cur记录当前链表节点指针,nxt记录下一个链表节点指针。

使用一个int 变量记录是否为奇数节点,如果是则更新tailA。

time O(n),space O(1)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
/**
定义四个变量:headA,headB记录第一个和第二个节点,tailA记录奇数节点的尾部,cur为当前遍历节点,next为下一个节点

**/
class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        if(head==NULL||head->next==NULL||head->next->next==NULL) return head;
        ListNode* headA=head,*headB=head->next;
        ListNode* tailA,*cur=head,*nxt=head->next;
        int flag=0;
        while(nxt){
            cur->next=nxt->next;
            cur=nxt,nxt=nxt->next;
            if(flag) tailA=cur;
            flag=(flag+1)%2;
        }
        cur->next=NULL;// if(flag) cur->next=NULL;应该也可以
        tailA->next=headB;
        return headA;
    }
};

 效果不错

 

 


 

C++代码:定义三个指针变量,cur,nex,head2,思路就是将链表分开为奇偶两部分,cur,和nex分别指向当前节点和下一个节点,当nex的下一个节点为NULL 终止循环,head指向第二个节点(如果有的话);

时间复杂度O(nodes);

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode* oddEvenList(ListNode* head) {
12         if(head==NULL||head->next==NULL) return head;
13         ListNode* cur;
14         ListNode* nex;
15         ListNode* head2;
16         cur=head;nex=head->next;head2=nex;
17         int flag=1;
18         while(nex->next!=NULL){
19             cur->next=nex->next;
20             cur=nex;nex=nex->next;
21             flag=-flag;
22         }
23         cur->next=NULL;
24         
25         if(flag==1){
26             cur->next=head2;
27         }else{
28             nex->next=head2;
29         }
30         return head;
31     }
32 };

 效果一般般:

 

posted @ 2019-02-27 20:59  Joel_Wang  阅读(163)  评论(0编辑  收藏  举报