思路:
第一步 先定义两个点,初始位置都在头结点位置
第二步 让第一个点先走k步
第三步 再让第二个点开始和第一个点同时往后走
第四部 当第一个点走到最后时,就可以返回第二个点的值了
//找倒数第k个结点,方法二:双引用遍历
class ListNode{
int val;
ListNode next;
ListNode(int val){
this.val=val;
}
}
public class Practise23{
public ListNode istNodeFindKthToTai2(ListNode head,int k){
ListNode front=head;
ListNode back=head;
for(int i=0;i<=k;i++){
if(front==null){
return null;
}
front=front.next;
}
while(front!=null){
front=front.next;
back=back.next;
}
return back;
}
}
注意如果在第二步执行过程中第一个点还没有走到K步就为空,那么直接返回null
本文介绍了一种使用双指针法寻找链表中倒数第K个节点的有效算法。通过定义两个初始位置相同的指针,第一个指针先向前移动K步,然后两个指针同时移动直到第一个指针到达链表尾部,此时第二个指针所指向的即为倒数第K个节点。文章提供了详细的步骤说明和完整的Java代码实现。
699

被折叠的 条评论
为什么被折叠?



