题解 | #查找两个字符串a,b中的最长公共子串#

重排链表

http://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

/**

  • 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; ListNode mid = getMid(head); ListNode midNext = mid.next; mid.next = null;//将原来的链表断成两条链表 //使用头插法翻转后半部分链表 ListNode prev = null; ListNode cur = midNext; while(cur != null){ ListNode next = cur.next; cur.next = prev; prev = cur; cur = next; } ListNode node = head; //合并链表 while(node != null && prev != null){ ListNode n1 = node.next; ListNode n2 = prev.next; node.next = prev; prev.next = n1; node = n1; prev = n2; }

    } //使用快慢指针找到中间结点位置 public ListNode getMid(ListNode head){ ListNode slow = head; ListNode fast = head; while(fast.next != null && fast.next.next != null){ slow = slow.next; fast = fast.next.next; } return slow; } }

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

酷酷的喜马拉雅山:感觉这比一直在初筛不动的好多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务