leetode24两两交换链表中的节点

技术leetode24两两交换链表中的节点 leetode24_两两交换链表中的节点一、题目二、算法分析
我主要想着通过while循环自己交换,前面两个单独考虑,后面的都是一样的处理。
因为前面的两个需

leetode24 _两两交换链表中的节点

一、题目

二、算法分析

我主要想着通过在…期间循环自己交换,前面两个单独考虑,后面的都是一样的处理。

因为前面的两个需要交换两次,后面的需要交换三次

/**

*明确链接列表。

*structListNode{

* intval

*列表节点*下一个;

*ListNode():val(0),next(nullptr){}

*ListNode(intx):val(x),next(nullptr){}

*ListNode(intx,ListNode*next):val(x),next(next){}

*};

*/

类别解决方案{

公众号:

列表节点*交换列表(列表节点*头){ 0

//如果为空,返回

如果(head==NULL)返回head;

//如果不为空

ListNode * pre=head

列表节点* lat

列表节点*前=标题

int标志=0;

while(pre!=NullPre-下一个!=空){ 0

lat=pre-next;

//交换节点

//forer-next=lat;

如果(标志==0){ 0

pre-next=lat-next;

lat-next=pre;

//更新

前者=pre

pre=pre-next;

//设置头节点

头=后

标志=1;

}

else{

前-下=后;

pre-next=lat-next;

lat-next=pre;

//更新

前者=pre

pre=pre-next;

}

//更新

//pre=pre-next;

//前=pre

}

返回头

}

};

三、参考代码

作者提供的思路很好:

公共列表节点交换列表(列表节点头){ 0

if(head==null | | head。next==null){ 0

返回头;

}

ListNode next=head.next

头部。下一个=swapPairs(下一个。接下来);

next.next=head

下一个返回;

}

纵一苇之所如,临万顷之茫然。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/77291.html

(0)

相关推荐