一、题目
给你一个链表,删除链表的倒数第n
个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
提示:
- 链表中结点的数目为
sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
二、题解
- 得到链表的长度
- 将删除结点的前一个结点的next指针指向删除结点的下一个指针
三、代码
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode lhead = new ListNode(0,head);//定义一个头节点,头节点指向这个链表
//每次调用这个链表只需要定义一个节点等于这个头节点
ListNode ll = lhead;
int len = 0;
while (ll.next != null) {
len++;
ll = ll.next;
}
ListNode cur = lhead;
for (int i = 1; i < len - n + 1; ++i) {
cur = cur.next;
}
cur.next = cur.next.next;
ListNode result = lhead.next;
return result;
}
四、结果
五、说明
本文章仅用于记录个人做题记录
由于本人是个小菜鸡(实锤),题目解法并非最优,且解题过程中参考(抄袭)各大佬解题方法,望见谅。