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

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

链表中倒数第k个结点

《漫画算法2》源码整理-8 链表中倒数第K个节点元素

剑指offer - 代码的鲁棒性

链表中的倒数第k个结点

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