Remove Nth Node From End of List @LeetCode

2014-11-24 08:51:47 · 作者: · 浏览: 0
 
package Level2;  
  
import Utility.ListNode;  
  
/** 
 *  
 * 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. 
 */  
public class S19 {  
  
    public static void main(String[] args) {  
        ListNode head = new ListNode(1);  
        ListNode l2 = new ListNode(2);  
        ListNode l3 = new ListNode(3);  
        ListNode l4 = new ListNode(4);  
        ListNode l5 = new ListNode(5);  
        head.next = l2;  
        l2.next = l3;  
        l3.next = l4;  
        l4.next = l5;  
          
        ListNode h = removeNthFromEnd(head, 5);  
        h.print();  
    }  
      
    public static ListNode removeNthFromEnd(ListNode head, int n) {  
        if(n == 0 || head == null){  
            return head;  
        }  
        if(n == 1 && head.next==null){  
            return null;  
        }  
          
        ListNode p = head, q = head;  
        // 让p先行q n个位置  
        for(int i=0; i