您的位置:首页 > 其它

链表中倒数第k个结点

2016-11-18 16:00 225 查看


题目描述

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

解题思路:

方案一(遍历两遍):先遍历一遍链表获取链表长度为N,正序遍历找到第N-K个节点就是倒数第K个节点。

方案二(遍历一遍):倒数第K个元素和最后面的元素之间的距离是K-1,因此首先定义指针p1,走K-1步长。然后定义指针p2,与p1一起往后走,直到p1 == null为止,此时p2所指即为倒数第K节点位置。注意:边界条件的书写!!!

package 链表;

public class 链表中倒数第K个节点 {
public static ListNode findKthToTail(ListNode head, int k) {
ListNode p1 = head;
if(head==null||k<=0){ //注意边界情况的处理!!!
return null;
}
for (int i = 0; i < k; i++) {
if (p1 != null) { //如果K大于链表长度
p1 = p1.next;
} else {
return null;
}
}
ListNode p2 = head;
while (p1 != null) {
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针