剑指offer 链表中倒数第k节点

题目描述:

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

解题思路:

使用两个指针来解决这个问题,第一个指针先走k步,然后第二个指针和第一个指针同时每次走一步,最后当第一个指针到达最后的位置,就可以返回第二个指针,同时需要注意k值大于链表的长度。

代码(java):

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

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode p1=head;
        ListNode p2=head;
        while(p1!=null && k>0){
            p1=p1.next;
            k--;
        }
        if(k>0)return null;
        while(p1!=null){
            p1=p1.next;
            p2=p2.next;
        }
        return p2;
    }
}

猜你喜欢

转载自blog.csdn.net/leo_weile/article/details/88632883
今日推荐