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个节点的主要内容,如果未能解决你的问题,请参考以下文章

22 链表中倒数第k个节点(第3章 高质量的代码-代码的鲁棒性)

刷题记录-剑指offer22:链表中倒数第k个节点

剑指Offer-代码的鲁棒性面试题22:链表中倒数第k个节点

14.链表中倒数第k个节点

剑指offer--22链表中倒数第k个节点

《剑指offer》面试题10:链表中倒数第k个节点