剑指Offer------链表中倒数第k个结点

来源:互联网 发布:千人基因组数据库 编辑:程序博客网 时间:2024/06/15 21:21

题目描述

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

<分析>:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一指针走(k-1)步,即到达第k个结点。然后两个指针同时开始向后移动,当第一个指针到达最后的结点时候,第二个结点所在位置就是倒数第k个结点了。

/** *  * @author zy * @date 2017年10月3日 下午1:49:40 * @Decription 输入一个链表,输出该链表中倒数第k个结点 */ class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}public class Ex7 {    public ListNode FindKthToTail(ListNode head,int k) {if(head == null || k <= 0) return null;        ListNode pre = head;        ListNode last = head;        int index = k;        for(int i=1;i<k;i++){            //以下判断为当K大于链表长度,则返回null            if(pre.next != null){                pre = pre.next;            }else{                return null;            }                    }        while(pre.next != null){            pre = pre.next;            last = last.next;        }        return last;    }}


原创粉丝点击