剑指 Offer II 021. 删除链表的倒数第 n 个结点
一、题目信息
解题思路: 双指针,一个left,一个right。都把他们初始化到链表的头结点,先让right走n+1步,如果走完之后right为空了,直接返回head.next。接下来让left从head开始走,right继续走,直到right为空,这时left和right中间的就是需要删除的节点,让left.next=left.next.next即可。
图解 1、假设n=2,需要删除链表的倒数第二个节点,就是4这个节点。 2、先让right向前走n+1步
3、left和right一起走,直到right走到空为止 4、left.next=lefe.next.next;
实现代码
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode left = head;
ListNode right = head;
int count = 0;
for (int i = 0; i < n; i++) {
right = right.next;
}
if (right == null) {
return head.next;
}
while (right.next != null) {
left = left.next;
right = right.next;
}
left.next = left.next.next;
return head;
}
}
其他题目分享
上一篇:
Java基础知识总结(2021版)
下一篇:
前端常见面试题之----混合app的使用
