LeetCode题目:删除链表的倒数第N个节点
发布日期:2021-11-18 19:17:47 浏览次数:9 分类:技术文章

本文共 1152 字,大约阅读时间需要 3 分钟。

题目描述:

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

节点的属性里面只有本身的值和下一个节点两个,可以找出倒数第N个节点到底是哪一个节点,把这个节点(Node1)取出来,把这个节点的下一个节点的属性(Node1.next),附给这个节点的上一节点(Node2)的下一节点(Node2.next)属性(有点拗口),这样就直接让这个节点的上一节点直接指向这个节点的下一节点,跳过了这个节点。

注意:把同一个头节点副给不同的节点,都是指向装着这个链表的容器的,所以修改Node2.next是直接修改head里面的内容的。

代码(Java):

public class doingmyself {
public static void main(String[] args) {
ListNode head = new ListNode(1); head.next = new ListNode(2); head.next.next = new ListNode(3); head.next.next.next = new ListNode(4); head.next.next.next.next = new ListNode(5); removeNthFromEnd(head, 2); } public static ListNode removeNthFromEnd(ListNode head, int n) {
ListNode Node = head; //三个链表都是指向一个装这个链表的容器的,所以三个链表的修改都会改变head ListNode Node1 = head; ListNode Node2 = head; int length = 0; for(int i=1;;i++) {
//通过循环得到链表的长度 Node = Node.next; if(Node==null) {
length = i; break; } } if(length==n && Node==null) return head.next; if(length

转载地址:https://blog.csdn.net/weixin_39224015/article/details/105704186 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode题目:有效的符号
下一篇:LeetCode题目:四数之和

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 17时29分56秒