import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ public ListNode removeNthFromEnd (ListNode head, int n) { if (head == null || n == 0) return head ; ListNode pre01 = new ListNode(-1) ;//根节点(可以消除对根节点被删除的情况) pre01.next = head ; ListNode fast = pre01 ; int i = 1 ; while(i <= n) { fast = fast.next ; i ++ ; if(fast == null) { return null ; } } ListNode slow = head ;//slow最终为待删除的节点 ListNode slow_pre = pre01 ;//slow_pre最终为slow的前一个节点 while(fast.next != null) { slow_pre = slow ; slow = slow.next ; fast = fast.next ; } slow_pre.next = slow_pre.next.next ; return pre01.next ; } }