AcWing32:链表中倒数第k个节点
Posted 劭兮劭兮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing32:链表中倒数第k个节点相关的知识,希望对你有一定的参考价值。
问题
原题链接:链表中倒数第k个节点
解决方法
- 首先 遍历 整个单链表,得到单链表的长度;
- 比较 k 和 length 的大小,如果k > length , 返回null
- 单链表的倒数第k个结点,也就是单链表的正数第 length-k+1 个结点
- 再次遍历单链表,得到正数第 length-k+1 个结点
- 返回正数第 length-k+1 个结点
JAVA代码实现
/**
* Definition for singly-linked list.
* public class ListNode
* int val;
* ListNode next;
* ListNode(int x) val = x;
*
*/
class Solution
public ListNode findKthToTail(ListNode pListHead, int k)
if(pListHead == null)
return null;
// element辅助遍历单链表
ListNode element = pListHead;
int length = 0;
// 先计算出链表长度
while(element != null)
length ++;
element = element.next;
if(k > length)
return null;
// 倒数第k个元素,其实就是正数第 length-k+1 个元素
for(int i = 2;i <= length-k+1;i++)
pListHead = pListHead.next;
return pListHead;
小记:
原题链接:链表中倒数第k个节点
以上是关于AcWing32:链表中倒数第k个节点的主要内容,如果未能解决你的问题,请参考以下文章