删除链表中倒数第n个节点

描述

给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。

样例

给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.


考察点
  • 链表
    • 画图展示指针
    • 注释描述
答案

ListNode removeNthFromEnd(ListNode head, int n) {
// write your code here
int i = 0;
ListNode selectNode = null;
ListNode preSelectNode = null;
ListNode index = head;
while (index != null) {
if (n - 1 - i == 0) {
selectNode = head;
}

        if (n - 1 - i < 0) {
            preSelectNode = selectNode;
            selectNode = selectNode.next;
        }

        i++;
        index = index.next;
    }
    if (preSelectNode == null) {
        if (selectNode == null) {
            return head;
        } else {
            return selectNode.next;
        }
    } else {
        preSelectNode.next = selectNode.next;
        return head;
    }
}