删除聊表的第N个节点
Posted 萍2樱释
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除聊表的第N个节点相关的知识,希望对你有一定的参考价值。
此博客链接:https://www.cnblogs.com/ping2yingshi/p/12689658.html
删除链表的第N个节点(34min)
题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
题解:
思路:
1)先求出链表的长度。
2)再次循环链表,当循环到链表长度减去n的长度时,把指针的next指向next的next.
注意:当第一次循环链表的长度时,是判断指针是不是null,而不是指针的next是不是空。
代码如下:
class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { int count=0; ListNode p=head; ListNode q=head; while(p!=null) { p=p.next; count++; } int k=count-n; if(k==0) return head.next; for(int i=1;i<k;i++) q=q.next; q.next=q.next.next; return head; } }
以上是关于删除聊表的第N个节点的主要内容,如果未能解决你的问题,请参考以下文章