题目
输入一个链表,输出该链表中倒数第k个结点。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
import java.util.List;
import java.util.ArrayList;
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null) return null;
//借助数组
ArrayList<ListNode> arr = new ArrayList<>();
while(head != null){
arr.add(head);
head = head.next;
}
int length = arr.size();
if(k<=0 || k>length) return null;
return arr.get(length - k);
/*两个指针,前面一个与后面保持k的距离,同时移动到链表尾,则后面那个就是倒数第k个
ListNode p1 = head;
ListNode p2 = head;
//p2向前移动k个节点
for(int i=0;i<k-1;i++) {
if(p2==null) return null;
p2 = p2.next;
}
if(p2==null) return null;
while(p2.next!=null) {
p1=p1.next;
p2=p2.next;
}
return p1;
*/
}
}