Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
思路:两个指针,未能一次通过。。。。
当需删除的元素是第一个元素时,直接按24-27进行删除
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode removeNthFromEnd(ListNode head, int n) { 14 // Start typing your Java solution below 15 // DO NOT write main() function 16 ListNode p = head; 17 int totalNum = 0; 18 while(p != null){ 19 totalNum ++; 20 p = p.next; 21 } 22 23 24 if(totalNum == n){ 25 head = head.next; 26 return head; 27 } 28 29 30 ListNode p1 = head; 31 for(int i = 0; i < (totalNum - n - 1); i ++){ 32 p1 = p1.next; 33 } 34 ListNode p2 = p1.next; 35 if(p2 != null) 36 p1.next = p2.next; 37 else 38 p1.next = null; 39 40 return head; 41 42 } 43 }