删除链表中倒数第n个节点,需要考虑的细节:链表为空时,链表只有一个节点时,n=1时。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if(head == null || (head.next == null && n==1)) return null; if(n == 0) return head; ListNode p = new ListNode(1), q = new ListNode(1); p = head; int count = 0; while(p != null) { p = p.next; count ++; } int cur = count - n; if(cur == 0) { ListNode ln = new ListNode(1); ln = head.next; head.next = null; return ln; } count = 0; p = head; while(p != null) { count ++; if(count == cur) break; p = p.next; } q = p.next; p.next = q.next; q.next = null; return head; } }