剑指 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的使用