题目
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?
思路
- 先遍历一遍得到链表的长度l,在从头开始删除第l-n个节点即可
实现
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//遍历得到链表的长度lListNode p = head;int l = 0;//这里需要注意,l从0开始才是链表的总长度while(p != null){p = p.next;l++;}int x = l - n ;ListNode dummy = new ListNode(-1);dummy.next = head;ListNode curr = dummy;while(x > 0){curr = curr.next;x--;}curr.next = curr.next.next;return dummy.next;}
}