您的位置:首页 > 职场人生

剑指offer面试题22:链表的倒数第k个节点 java

2017-06-23 11:01 507 查看
题目描述

输入一个链表,输出该链表中倒数第k个结点。

思路

双指针法,一个指针先往前走k-1步,然后另外一个指针才开始走,当第一个指针走到尾部了,那么第二个指针正好指向了倒数第k个结点

public class FindKthToTail {
//输出该链表中倒数第k个结点
public static ListNode findKthToTail(ListNode head,int k){
if (head == null || k == 0){
return null;
}
ListNode pHead = head;
//先让第一个指针走k-1步,但是要判断下一个节点是否为空
for (int i = 0;i < k-1;i++){
if (pHead.next != null){
pHead = pHead.next;
}else {
return null;
}
}
ListNode pBehind = head;
//第一个指针和第二个指针同时遍历,当第一个指针到尾节点时,正好是倒数第k个节点
while (pHead.next !=null){
pHead = pHead.next;
pBehind = pBehind.next;
}
return pBehind;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: