输入一个链表,输出该链表中倒数第k个结点。
输入 1,{1,2,3,4,5}
返回 {5}
思路很简单,其实就是求倒数k个节点,那么反过来想就是求正数链表的长度减去k再加上一这个位置的节点就好了。
思路:
于是可以这样做,使用两个节点,他们刚开始都指向head头节点,然后先让某一个节点开始往前面跑,当这个节点跑到k-1的位置的时候,那么再让另外一个节点开始跑,当前面的那个节点已经走到链表的最末尾的时候,那么后面的这个节点所指向的位置就刚好是倒数第k个节点。
需要注意的是,需要借助一个变量把链表的长度记录下来,以便于后续的判断(当k大于链表长度的情况,就应该直接返回null,因为并没有倒数第k这个节点。)
答案给出如下
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {