题目
题目:输入一个单向链表,输出该链表中倒数第k 个结点。
链表的倒数第0 个结点为链表的尾指针。
解题思路
需要2个指针,一个是遍历指针,一个是跟随指针。当遍历指针遍历到第K个元素的时候,跟随指针也要每次移动一步,保持和遍历指针的距离始终为K,当遍历结束的时候,跟随指针所指向的节点即为所求节点。
代码
public class Problem13 {
private LinkedListNode node;
// 当遍历的个数大于k时要,该指针要每次要移动K次,目的是保持和遍历指针的距离为K,
//这样当遍历结束的时候,该指针就指向倒数第K个指针
public void getLastKNode(LinkedListNode root, int k) {
int index = 1;
LinkedListNode runNode;
runNode = root;
while (runNode != null) {
runNode = runNode.getNextNode();
index++;
if (index == k) {
node = root;
} else if (index > k) {
node = node.getNextNode();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}