剑指offer——链表中倒数第k个结点(相关扩展题不错)

来源:互联网 发布:fm2017梅西数据 编辑:程序博客网 时间:2024/06/16 22:20

面15

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

思路:
因为是倒数第k个节点,所以考虑要减少遍历的次数。
因此定义两个指针a和b,a按顺序遍历链表,b在a出发遍历到第k个值后,在原点出发,等到a到达终点,b所指的点即为结果。

    public ListNode FindKthToTail(ListNode head,int k) {        if(head==null||k<=0) // 极端输入            return null;        ListNode result = null;        ListNode temp = head;        int i = 1;        while(temp!=null){ //一开始直接用head进行迭代操作,导致result所需要的head值就不见了            if(i==k)                result = head; // 考虑到k有可能大于i值,所以一开始result设为null,等到i==k时,才给result的引用指向head            if(i>k)                result = result.next;            temp = temp.next;            i++;        }        return result;    }

这里写图片描述

阅读全文
0 0