题目描述
问题解析
使用快慢指针双指针来做,倒数第K的意思就是快慢指针相隔k个单位进行遍历
首先先让快指针走K个单位,while循环遍历快指针
接着再让慢指针和快指针一起向后走,在并列一个while循环,走快慢指针。
(链表的题目多是使用while循环)
代码实例
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
ListNode fast = head;
ListNode slow = head;
while(fast != null&& k > 0){
fast = fast.next;
k--;
}
while(fast != null){
fast = fast.next;
slow = slow.next;
}
return slow;
}
}