题目描述

输入一个链表,输出该链表中倒数第k个结点。

分析

1、快慢指针法

快指针先往前走k步,注意判断边界,然后快慢一起走,当快指针为none的时候,慢指针走到了倒数第k个节点。

  1. public class Solution {
  2. public ListNode FindKthToTail(ListNode head,int k) {
  3. if(head == null || k <= 0) {
  4. return null;
  5. }
  6. ListNode fast = head;
  7. ListNode slow = head;
  8. while(k-- > 1) {
  9. if(fast.next != null) {
  10. fast = fast.next;
  11. }else {
  12. return null;
  13. }
  14. }
  15. while(fast.next != null) { //循环退出时fast指向了最后一个节点
  16. fast = fast.next;
  17. slow = slow.next;
  18. }
  19. return slow;
  20. }
  21. }

2、正数第n-k+1个节点