码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode——Swap Nodes in Pairs

时间:2015-02-26 13:10:49      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

思路1:

 

class Solution {
public:
// 两个指针,p, q, q指向第二个,preP是p之前
    ListNode *swapPairs(ListNode *head) {
        if(head == NULL) return NULL;
        auto p = head;
        auto q = head->next;
        ListNode preHead(-1);
        ListNode* preP = &preHead;
        preP->next = p;
        ListNode* tmp;
        while(q){
            preP->next = q;
            tmp = q->next;// 记录q之后,作为下一个p
            q->next = p;
            preP = p;
            if(tmp) p = tmp;
            else break;
            q = p->next;
        }
        return preHead.next;
    }
};
技术分享

结果是超时了,后来看了别的答案之后发现是tmp=q->next这句处理的不好,不应该用临时变量,而用p->next = q->next;这样下一个p可以是p->next:

class Solution {
public:
// 两个指针,p, q, q指向第二个,preP是p之前
    ListNode *swapPairs(ListNode *head) {
        if(head == NULL) return NULL;
        auto p = head;
        auto q = head->next;
        ListNode preHead(-1);
        ListNode* preP = &preHead;
        preP->next = p;
        while(q){
            preP->next = q;
            p->next = q->next;// 记录q之后,作为下一个p
            q->next = p;
            preP = p;
            p = p->next;
            q = p?p->next:nullptr;
        }
        return preHead.next;
    }
};

leetcode——Swap Nodes in Pairs

标签:

原文地址:http://www.cnblogs.com/skysand/p/4300836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!