題目描述
??給你一個鏈表的頭節點 head 。刪除 鏈表的 中間節點 ,并返回修改后的鏈表的頭節點 head 。長度為 n 鏈表的中間節點是從頭數起第 ?n / 2? 個節點(下標從 0 開始),其中 ?x? 表示小于或等于 x 的最大整數。對于 n = 1、2、3、4 和 5 的情況,中間節點的下標分別是 0、1、1、2 和 2 。
解析
??經典的快慢指針的解法,快指針一次走兩步,慢指針一次走一步即可剛好在快指針到尾部的時候走到中間
public ListNode deleteMiddle(ListNode head) {if (head == null || head.next == null) {return null;}ListNode dummy = new ListNode(0);dummy.next = head;ListNode fast = head;ListNode slow = dummy;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;}slow.next = slow.next.next;return dummy.next;}