题目:输入一个链表,输出该链表中倒数第k个结点。
解答:此题考查的是快慢指针
1.例如 1->4->5->7->8->9 ,输出倒数第2个(即为8)
2.定义一个slow节点等于head(1),一个fast节点等于head(1),先将fast向后移动k(2)个位置,fast此时等于5
3.然后两个指针同时往后走,直到fast== null时,结束循环,返回slow,即为需要找出的节点信息,因为fast比slow多走k步,相当于slow走了len(链表长度)-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) {
ListNode fast = head;
ListNode slow = head;
//先将fast向后移动k个位置
for(int i = 0 ;i < k;i++){
if(fast == null){return null;}
fast = fast.next;
}
while(fast!=null && slow != null){
fast = fast.next;
slow = slow.next;
}
return slow;
}
}