【题目】:
输入一个链表,输出该链表中倒数第k个结点。
【示例】:
已知链表,给出k=3
123456789 10
找出该链表倒数第3个结点。
结果:12345678
【关键点】: 链表遍历
- 两个链表指向head,pre先走k-1个节点;
- 第k个数时,pre继续走,last从头开始走;
- pre走到完,last为倒数第k个。
【Java】:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
while(head==null||k<=0)return null;
ListNode pre = head;
ListNode last = head;
for(int i=1;i<k;i++){//pre先走k-1个数
if(pre.next!=null)
pre = pre.next;
else return null;
}
while(pre.next!=null){//第k个数时,pre继续走,last从头开始走;pre走到完,last为倒数第k个
pre = pre.next;
last = last.next;
}
return last;//返回last链表
}
}