/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pHead = new ListNode(-1); pHead.next = head; ListNode p = pHead; for (int i = 1; i <= n + 1; ++i) p = p.next; ListNode q = pHead; while (p != null) { p = p.next; q = q.next; } p = q.next; q.next = p.next; return pHead.next; }}