链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路
使用双指针来进行p、q 先让 p 先走 k 个位置,q 再跟着走,最后q就是倒数第k个结点。
(感觉题目中的k必须>=1),否则返回null。
但是有没有可能k可以为0 还可以为负,返回的是正数的数呢?
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode p, q;
p = q = head;
int i = 0;
for (; p != null; i++) {
if (i >= k){
q = q.next;
}
p = p.next;
}
return i < k ? null : q;
}
}
本文介绍了一种高效求解链表中倒数第K个结点的算法,采用双指针策略,先让前指针移动K步,随后两个指针同步移动直至前指针到达链表尾部,此时后指针即指向目标结点。文章提供了完整的代码实现及解析。
308

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



