public ListNode removeNthFromEnd (ListNode head, int n) { if(head == null) return null; ListNode temHead = new ListNode(-1); temHead.next = head; ListNode p = temHead, q = temHead; int count = n; while(count > 0){ q = q.next; count --; } while(q.next != null){ q = q.next; p = p.next; } if(p.next != null) p.next = p.next.next; else p.next = null; return temHead.next; }