问题描述
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
实例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
方法一
class Solution {
public int kthToLast(ListNode head, int k) {
ListNode pre = head;
List<Integer> values = new ArrayList();
while(pre!=null){
values.add(pre.val);
pre = pre.next;
}
if(values.size() >= k){
return values.get(values.size()-k);
}
return -1;
}
}
方法二差值法
class Solution {
public int kthToLast(ListNode head, int k) {
//移动K步骤
ListNode pre = head;
ListNode post = head;
//先将post移动K步骤
int tmp = 0;
while(k>tmp){
post = post.next;
tmp++;
}
while(post!=null){
pre = pre.next;
post = post.next;
}
if(pre!=null){
return pre.val;
}else{
return -1;
}
}
}
本文介绍了一种找出单向链表中倒数第k个节点并返回其值的算法。提供了两种实现方法:一是通过将链表元素存入数组再返回目标值;二是使用双指针技巧,先移动其中一个指针k步,然后同时移动两个指针直到前指针到达链表尾部,此时后指针指向的目标节点即为所求。
1210

被折叠的 条评论
为什么被折叠?



