版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangvalue/article/details/87894675
题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:
由于在考虑到链表只告诉了头结点,是单链表在求倒数第k个链表,只能顺着链表向后移动
考虑使用两个指针firstNode,secondNode都是指向第一个结点
首先是firstNode从第一个结点开始向后移动到第k个位置,那么剩下(链表总长度-k)个结点
此时firstNode、和secondNode同时开始移动直到firstNode移动到链表末端的时候,secodeNode的位置就是倒数第k个位置
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//如果输入的链表为null,空,或者k小于等于0
if(head==null||k<=0){
return null;
}
ListNode firstNode = head,secondNode = head;
//firstNode向链表第k个位置,其中链表是按照从j=1的位置来进行
for(int j=1;j<k;j++){
if(firstNode.next!=null){
firstNode=firstNode.next;
}else{
return null;
}
}
//此时firstNode接着向链表后续移动,直到最终移到链表末尾,此时secondNode的位置就是倒数第k个位置
while(firstNode.next!=null){
firstNode=firstNode.next;
secondNode = secondNode.next;
}
return secondNode;
}
}