/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public void reorderList(ListNode head) {
List<ListNode> list=new ArrayList<>();
ListNode p=head;
while(p!=null){
list.add(p);
p=p.next;
}
if(list.size()<=2){
return;
}
p=head;
ListNode a = head;
for(int j=list.size()-1,i=0;i<j;i++,j--){
if(j-i==2){//当为奇书个数的时候,最后三个会出现这种情况
a = p.next;
p.next = list.get(j);
p.next.next = a;
a.next=null;
break;
}
if(j-1==i){//当为偶数个数的时候,最后三个会出现这种情况
p.next.next=null;
break;
}
a = p.next;
p.next = list.get(j);
p.next.next = a;
p = a;
}
}
}
143. Reorder List
最新推荐文章于 2022-10-08 18:49:12 发布
本文介绍了一种用于重新组织单链表元素顺序的算法实现。该算法通过先将链表节点存储到列表中,然后从两端交替取出节点来调整顺序,最终达到预定的重构效果。适用于奇数或偶数长度的链表。
364

被折叠的 条评论
为什么被折叠?



