swapPairs

两两交换典型的指针操作,用了19min 一次submit,AC。这已经算自己做的比较好的情况了,如果面试时候,可能还会紧张导致出乱子。

处理特殊的,要注意0 或1个结点的。

否则,需要考虑第一次,head的时候我打算单独从循环拿出来处理。

主题代码里,需要pprev,p, 同时记录pnextnext, 然后判断结束条件,后面0个或1个结点的时候。

class Solution {
public:
    ListNode *swapPairs(ListNode *head) {
        if(head==NULL || head->next==NULL) return head;

        ListNode*p=head,*pprev, *pnextnext;


        pnextnext=p->next->next;

        head=p->next;
        head->next=p;
        p->next=pnextnext;

        pprev=p;
        p=p->next;


        while(p!=NULL && p->next!=NULL)
        {
            pnextnext=p->next->next;

            pprev->next=p->next;
            p->next->next=p;
            p->next=pnextnext;

            pprev=p;//record pprev
            p=p->next;//p back
        }

        return head;

    }
};

另外今天看到一个大神的InsertInterval,好短啊,我一定走了弯了,而且弯了好多。。。现在还在用二分调。。。

Posted by richard爱闹 - 7月 30 2014
如需转载,请注明: 本文来自 Richard