https://leetcode.com/problems/remove-nth-node-from-end-of-list/
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.
Note:
Given n will always be valid.
Try to do this in one pass.
1 public class Solution { 2 public static ListNode removeNthFromEnd(ListNode head, int n) { 3 ListNode li=head; 4 int len=0; 5 while(li!=null){ 6 len++; 7 li=li.next; 8 } 9 int index=len-n+1; 10 if(index==1){return head.next;} 11 li=head; 12 ListNode pre_li=li; 13 while(index-->1){ 14 pre_li=li; 15 li=li.next; 16 } 17 pre_li.next=li.next; 18 return head; 19 } 20 // public static class ListNode { 21 // int val; 22 // ListNode next; 23 // 24 // ListNode(int x) { 25 // val = x; 26 // } 27 // } 28 public static void main(String[]args){ 29 ListNode[]node=new ListNode[4]; 30 for(int i=0;i<node.length;i++){ 31 node[i]=new ListNode(i); 32 } 33 node[0].next=node[1]; 34 node[1].next=node[2]; 35 node[2].next=node[3]; 36 ListNode head=removeNthFromEnd(node[0],2); 37 while(head!=null){ 38 System.out.println(head.val); 39 head=head.next; 40 } 41 } 42 }