题目描述
输入一个链表,输出该链表中倒数第k个结点。
题解:先统计链表的总节点数,然后求出倒数第k个节点是顺序遍历的第几个节点。可以采用线性表存储每一个位置的节点,然后查找则比较快些,不用再遍历链表。
import java.util.ArrayList;
import java.util.List;
public class Solution {
public ListNode FindKthToTail(ListNode head, int k) {
//判断输入的是不是为空的链表,或者是不是倒数第0个
if(head == null || k == 0) return null;
//获取首节点
ListNode node = head;
//将遍历的节点放入线性表(基于数组实现,提取快)中
List<ListNode> nodes = new ArrayList<>();
while(node != null) {
nodes.add(node);
node = node.next;
}
//判断链表长度跟倒数的k进行对比,相比较
if(nodes.size() - k < 0) {
return null;
}
//返回倒数第k个
return nodes.get(nodes.size() - k);
}
}