JAVA 用双指针找倒数第n-1个节点
既然是删改链表,想都不想先把sentinal(stn)加到链表前方,这样边界问题处理轻松很多。

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode removeNthFromEnd (ListNode head, int n) {
      ListNode stn = new ListNode(0);
      stn.next = head;
      ListNode f = stn, s = stn;
      while(n > 0) {
        f = f.next;
        n--;
      }
      
      while (f.next != null) {
        f = f.next;
        s = s.next;
      }
      s.next = s.next.next;
      return stn.next;
    }
}