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,好短啊,我一定走了弯了,而且弯了好多。。。现在还在用二分调。。。