题目:输入一个链表,输出该链表中倒数第k个结点。
思路:设置该链表的两个指针指向头节点,第一个指针先走到第k个节点;
然后两个指针往后走,先走的指针走到最后一个,第二个指针指向第k个节点。
边界检查:a. 链表为空
b. k为0或k的长度大于链表的长度。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
//边界检查
if(head == null){
return null;
}
ListNode curr = head;
int len = 0;
while(curr != null){
curr = current.next;
len++;
}
if(k == 0 || k > len){
return null;
}
ListNode node1 = head;
ListNode node2 = head;
for(int i = 1; i < k; i++){
node2 = node2.next;
}
while(node2.next != null){
node1 = node1.next;
node2 = node2.next;
}
return node1;
}
}