思路:
第一步 先定义两个点,初始位置都在头结点位置
第二步 让第一个点先走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