首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

获取链表中倒数第K个节点

前言 给定一个单向链表的头节点,如何获取该链表中倒数第K个节点(从1开始计数)?本文将带着大家一起解决这个问题,欢迎各位感兴趣的开发者阅读本文。...思路分析 我们通过一个例子来做进一步的分析: 准备一个链表,它有6个节点,从头节点开始,其值依次为:1、3、5、9、15、21 获取该链表的倒数第3个节点 遍历两次链表 根据单向链表的定义,我们可知:...也就是说,我们需要遍历链表两次,第一次计算出链表中节点的个数,第二次就能获取倒数第K个节点,如下图所示: 第1次遍历链表拿到了链表的长度n=6 第2次遍历链表获取到了倒数第3个节点处(6-3+1)的值9...只遍历一次链表就能获取链表的倒数第K个节点。...,直至p1指针指向尾节点,p2指针正好指向倒数第K个节点 // 获取倒数第K个节点 getCountdownNode(k: number): ListNode { if (k <= 0)

47820

算法-获取链表中倒数第k个结点

题目: 输入一个链表,输出该链表中的倒数第k个结点。比如链表中的值为1,2,3,4,5,6。倒数第三个结点为值为4的结点。...链表定义如下: struct ListNode { int value; ListNode *next; }; 解题思路: 这个问题相对来说还是挺好理解的,要找到倒数第k个结点,最直接的思路肯定是倒着数...那么倒数第k个的问题基于必须要转化成正数第n-k+1个,其中n是整个链表的长度,那么问题就可以这样解决: (1)先遍历一遍链表,得到链表的长度n; (2)再从头遍历链表,遍历到n-k+1个就是要找到的倒数第...(一个小于k个长度的链表显然没有倒数第k个结点) (3)如果输入的k=0,代码不会异常,而是返回null。

58780
领券