题解 | #重排链表#
重排链表
https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b
import java.util.*;
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public void reorderList(ListNode head) {
if(head == null || head.next == null)
{
return;
}
int count = 0;
ListNode cur = head;
Deque<ListNode> stack = new LinkedList<>();
Deque<ListNode> queue = new LinkedList<>();
while(cur != null)
{
queue.add(cur);
stack.push(cur);
cur = cur.next;
count++;
}
ListNode tmp = head;
int flag = 0;
int COUNT = 1;
while(true)
{
if(flag == 0)
{
queue.poll().next = stack.peek();
COUNT++;
flag = 1;
}
else{
stack.pop().next = queue.peek();
flag = 0;
COUNT++;
}
if(COUNT == count)
{
if(COUNT % 2 ==1)
{
stack.peek().next = null;
}
else{
queue.peek().next = null;
}
break;
}
}
}
}
