题目:
输入一个链表,输出该链表中倒数第k个结点。
思路:
用两个指针,第一个先走k-1步,然后两个指针同时走,当第一个指针走到尾部时,第二个指针指向的就是第k个节点。
代码:
/**
* 链表的倒数第K个节点
* @param head
* @param k
* @return
*/
private static ListNode EndKNode(ListNode head,int k){
if (head==null||k==0){
return null;
}
ListNode firstNode = head;
ListNode secondNode = null;
for (int i = 1; i <k ; i++) {
if (firstNode.next!=null){
firstNode=firstNode.next;
}else {
return null;
}
}
secondNode=head;
while (firstNode.next!=null){
firstNode=firstNode.next;
secondNode=secondNode.next;
}
return secondNode;
}
网友评论