题目描述
输入一个链表,输出该链表中倒数第k个结点
这道题其实很简单,设置两个节点,开始时都指向头,根据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) {
// 设置两个节点,当第一个到最后是 与他相距k的节点就是第k个
//让第一个先跑k-1个,后面就开始跑
if(head==null||k==0)return null;
ListNode re = head;
ListNode mov = head;
int a=k;
int count=0;
while (mov.next != null) {
mov=mov.next;
count++;
if(k<=1) {
re=re.next;
}
k--;
}
if(a>count+1)return null;
return re;
}
}