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