题目描述
输入一个链表,输出该链表中倒数第k个结点。
链表:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
解题思路:
1.计算链表中节点的个数。
ListNode pListNode=head,qListNode=head;
int count=0;
while(pListNode!=null) {
count++;
pListNode=pListNode.next;
}
2.从题目要求的倒数第几个节点,算出顺数是第几个节点。
int position=count-k+1;
3.从头结点开始,遍历到题目的目标节点,并且取出。
while(position>1) {
position--;
qListNode=qListNode.next;
}
完整代码:
public ListNode FindKthToTail(ListNode head,int k) {
ListNode pListNode=head,qListNode=head;
int count=0;
while(pListNode!=null) {
count++;
pListNode=pListNode.next;
}
if(count<k)
return null;
int position=count-k+1;
while(position>1) {
position--;
qListNode=qListNode.next;
}
return qListNode;
}