Remove Nth Node From End of List

来源:互联网 发布:linux ftp无法访问 编辑:程序博客网 时间:2024/05/22 09:42

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.
解题思路:引用两个“指针”,首先第一个指针走n步,然后第二个指针和第一个指针一起走(第二个指针此时从头结点开始走),当第一个指针走到末尾时,在此时第二个指针刚好走到要删除的结点前一个,
 preDeleteNode.next = preDeleteNode.next.next;把第二个指针指向要删除结点的下一个结点
/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode removeNthFromEnd(ListNode head, int n) {        if(n<0){            return null;        }        ListNode a = new ListNode(0);        a.next = head;        ListNode preDeleteNode = a;        for(int i=0;i<n;i++){           head = head.next;        }        while(head!=null){            head = head.next;            preDeleteNode = preDeleteNode.next;        }        preDeleteNode.next = preDeleteNode.next.next;        return a.next;    }}


0 0
原创粉丝点击