链表中倒数第k个节点

2019-09-27  本文已影响0人  BluthLeee

题目描述

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

分析

定义两个指针,一次遍历即可,时间复杂度为O(n)
初始化两个指针均指向链表头节点。第一个指针遍历整个链表,遍历过程中,k--,这样当k<1时,第二个指针开始从头遍历,当第一个指针遍历结束时,第二个指针正好遍历到该链表中倒数第k个节点。

代码

/*
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 p=head;
        ListNode pre=head;
        int count=0;
        int a=k;
        while(p!=null){
            p=p.next;
            count++;
            if(k<1){
                pre=pre.next;
            }
            k--;
        }
        if(count<a){
            return null;
        }
        return pre;
    }
}

参考链接

牛客网

上一篇下一篇

猜你喜欢

热点阅读