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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 17时29分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
RabbitMQ集群及镜像配置部署详解
2019-04-26
常用的JVM参数详解
2019-04-26
Ansible自动化运维实战部署1
2019-04-26
HTML基础知识与简介
2019-04-26
表格标签介绍
2019-04-26
CSS基础知识
2019-04-26
JavaScript 操作 HTML DOM
2019-04-26
实训中学到的HTML基础知识(1)
2019-04-26
实训中学到的HTML基础知识(2)
2019-04-26
实训中学到的HTML基础知识(3)
2019-04-26
实训中学到的HTML基础知识(4)
2019-04-26
实训中学到的HTML基础知识(5)
2019-04-26
实训中学到的HTML基础知识(6)
2019-04-26
JAVA SE之面向对象10:集合1
2019-04-26
排序算法整理2:选择排序及其时间与空间复杂度的计算
2019-04-26
JAVA SE之面向对象14:IO流的基础
2019-04-26
Handler+Looper+MessageQueue+Message机制分析
2019-04-26
Android窗口机制
2019-04-26
Java并发编程之线程、多线程和线程池专题
2019-04-26