美文网首页
面试题21:链表中倒数第K个节点

面试题21:链表中倒数第K个节点

作者: 灰化肥发黑会挥发 | 来源:发表于2018-12-27 14:13 被阅读0次

题目:输入一个链表,输出链表中倒数第k个节点

  • 设置快慢指针,第一个指针先走K个节点,然而第二个指针再开始后,当第一个指针走到最后的时候,第二指针指向的位置就是倒数第K个节点。
    -考虑异常情况
  1. 输入链表为空。
  2. K的值大于链表长度。
  3. K的值不能为0。
public class FindKList {
    public int Find(ListNode head,int k){
        if(k==0||head==null)
            return -1;
        ListNode pAhead = head;
        ListNode pBehind = head;
        for(int i=0;i<K-1;i++){
            if(pAhead.next!=null)
                pAhead = pAhead.next;
            else
                return -1;
        }
        while(pAhead!=null){
            pAhead = pAhead.next;
            pBehind = pBehind.next;
        }
        return pBehind.val;
    }
}

相关文章

网友评论

      本文标题:面试题21:链表中倒数第K个节点

      本文链接:https://www.haomeiwen.com/subject/krurlqtx.html