题目描述
输入一个链表,输出该链表中倒数第k个结点。
让链表从头走到尾,每移动一步,就让k的值减1。
链表1->2->3,k = 3,链表倒数第3个节点是第1节点。
走到的节点:1->2->3
k变化为:2 , 1 , 0
链表1->2->3,k = 2,链表倒数第2个节点是第2节点。
走到的节点:1->2->3
k变化为:1 , 0 , -1
当k == 0 时说明倒数第k个节点就是头节点。
当k < 0 时重新从开始走,每移动一步让K的值+1,当k = 1 时移动停止,此时的节点就是要找的节点。
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode FindKthToTail(ListNode head,int k) {
ListNode cur = head;
while(cur != null){
k--;
cur = cur.next;
}
if(k == 0) return head;
if(k < 0){
cur = head;
while(++k != 1){
cur = cur.next;
}
return cur;
}
return null;
}