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

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

思路:1、得到链表的长度,这样才能从链表头部定位到倒数第k个结点,即正数len-k+1个结点。

   2、正向遍历链表,直到len-k+1个结点,返回。

代码:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null||k<0)
            return null;
        int len = getLength(head);
        int count =0 ;
        if(k>len)
            return null;
        while(count<len-k){
            head=head.next;
            ++count;
        }
        return head;
    }
    private int getLength(ListNode head){
        if(head.next==null)
            return 1;
        else
            return 1+getLength(head.next);
    }
}

猜你喜欢

转载自www.cnblogs.com/xiaoxli/p/9479742.html