• 思路1
    第一遍遍历计算链表的长度,计算出倒数第k个节点的索引值idx = length-k,再从头寻找第idx个节点。

    public ListNode FindKthToTail (ListNode pHead, int k) {
          // write code here
          if(k <0) return null;
          int listLength = 0;
          ListNode ptr = pHead;
          while(ptr!=null){
              ++listLength;
              ptr = ptr.next;
          }
          int idx = listLength-k;
          if(idx<0) return null;
          for(int i = 0;i <idx; ++i){
              pHead = pHead.next;
          }
          return pHead;
      }
  • 思路2
    设置快指针和慢指针,快指针先走k步后,快指针和慢指针一起走,快指针到尾结点后,慢指针所在的节点即目标节点