[刷题]Remove Nth Node From End of List

来源:互联网 发布:windows ce版本 编辑:程序博客网 时间:2024/06/07 02:33

[LintCode]Remove Nth Node From End of List

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param head: The first node of linked list.     * @param n: An integer.     * @return: The head of linked list.     */    ListNode removeNthFromEnd(ListNode head, int n) {        // 2015-04-29 O(n)        if (head == null) {            return null;        }        ListNode dummy = new ListNode(0);        dummy.next = head; //被删除的节点可能是头节点,所以要用dummy        head = dummy;        ListNode nthNode = dummy;        for (int i = 0; i < n; i++) {            nthNode = nthNode.next;            if (nthNode == null) {                return null;            }        }        while (nthNode.next != null) {            head = head.next;            nthNode = nthNode.next;        }        // 删掉head的下一个节点        head.next = head.next.next;        return dummy.next;    }}



0 0
原创粉丝点击