题目描述

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

分析:
定义2个指针,第一个先跑K个,然后两个一起跑,当第一个跑到头的时候,第二个就是指在倒数第K个节点上。

代码

  1. public class Solution {
  2. public ListNode FindKthToTail(ListNode head, int k) {
  3. /**
  4. * step 1:创建2个节点,都指向头结点;
  5. */
  6. ListNode first = head;
  7. ListNode second = head;
  8. /**
  9. * step 2:让第二个节点指向第K个节点;
  10. */
  11. for (int i = 0; i < k; i++) {
  12. /**
  13. * 如果出现链表长度<k的情况,方法直接返回;
  14. */
  15. if (second == null) {
  16. return null;
  17. }
  18. second = second.next;
  19. }
  20. /**
  21. * step 3:
  22. */
  23. while (second!= null) {
  24. first = first.next;
  25. second = second.next;
  26. }
  27. return first;
  28. }
  29. }