删除链表中倒数第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;
}
}