import java.util.Scanner;
// 时间复杂度O(n) 空间复杂度O(n)
public class Main {
public void reorderList(ListNode head){
if(head == null || head.next == null){
return ;
}
ListNode t = head;
// 找到中间节点
ListNode temp = findMidNode(head);
ListNode midNode = temp.next;
temp.next = null;
//反转
midNode = reverseNode(midNode);
ListNode newNode = new ListNode(-1);
ListNode n = newNode;
int flag = 1;
while(t != null && midNode != null){
if(flag % 2 == 1){
n.next = t;
t = t.next;
}else{
n.next = midNode;
midNode = midNode.next;
}
flag ++;
n = n.next;
}
if(t == null && midNode !=
快手:链表重排(使用原地算法)
最新推荐文章于 2024-04-26 17:06:04 发布
本文探讨了如何使用原地算法对链表进行重排,以解决快手平台面临的数据处理挑战。通过深入理解链表结构,实现高效且不占用额外空间的解决方案,该算法对于优化链表操作具有重要意义。
摘要由CSDN通过智能技术生成