两种思路:
1)用栈的思想,先把链表反转,然后再找出第k个节点。
先把所有节点放进栈内,同时统计节点个数,若总节点数小于k则返回null。在弹出栈,倒数k即为弹出的第k个值。
2)定义两个指针,一个指针先走k步,再两者一起往后走,当第一个指针到达终点的时候,第二个指针刚好到达倒数第k点,因为他们之间的距离恒为k。
import java.util.List;
import java.util.Stack;
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null)
return null;
int i=0;
Stack<ListNode> stk = new Stack<ListNode>();
while(head!=null) {
stk.push(head); //循环将链表中的节点压入栈中
head=head.next;
i++;
}
if(k>i) {
return null;
}
ListNode result = null;