当前位置: 首页 > 后端技术 > Java

牛客网高频算法系列-BM8-链表最后k个节点

时间:2023-04-01 21:54:42 Java

牛客网高频算法系列-BM8-链表最后k个节点Description描述:输入一个长度为n的链表的list,将链表中元素的值设为a~i~,返回链表倒数第k个节点。如果链表长度小于k,则返回一个长度为0的链表。参见原题:BM8链表的最后k个节点解法一:双指针法首先考虑两种特殊情况:如果原链表为空,直接返回null。如果k不是正数,直接返回null。否则,使用双指针求解,求解过程如下:首先遍历链表,将快结点指向第k个结点;如果遍历后fast为null,说明链表长度小于k,没有倒数第k个节点。直接返回null;否则,fast和slow指针一起移动,直到fast移动到最后一个节点,此时slow为倒数第k个节点,并返回。codepublicclassBm008{/***链表最后k个节点**@parampHeadListNodeclass*@paramkintinteger*@returnListNodeclass*/publicstaticListNodefindKthToTail(ListNodepHead,intk){//如果原链表为空,直接返回nullif(pHead==null){returnnull;}//如果k不是正数,直接返回nullif(k<=0){returnnull;}ListNodefast=pHead;//将fast节点指向第k个节点for(inti=0;i