给定一个单链表 L:L0→L1→…→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3. 示例 2: 给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.
class Solution {
public void reorderList(ListNode head) {
/**
使用双端队列
node.next->pollFirst
node.next->pollLast
这样交替指向即可
*/
Deque<ListNode> deque=new LinkedList();
while(head!=null){
deque.addLast(head);
head=head.next;
}
ListNode cur=head;
while(!deque.isEmpty()){
if(cur==null){
cur=deque.pollFirst();
}else{
cur.next=deque.pollFirst();
cur=cur.next;
}
cur.next=deque.pollLast();
cur=cur.next;
}
//设置结尾
if(cur!=null){
cur.next=null;
}
}
}可能你不会的构造函数

