题目
输入一个链表,输出该链表中倒数第k个结点。(单向链表)
示例1
输入
1,{1,2,3,4,5}
返回值
{5}
解析
定义两个指针 同时指向头结点,第一个指针向前走k-1步,然后同步向后走,直到第一个指针走到最后,这样第二个指针就是倒数第k个节点。
c#代码
public class ListNode
{
public int val;
public ListNode next;
public ListNode (int x)
{
val = x;
}
}
class Solution
{
public ListNode FindKthToTail(ListNode head, int k)
{
if (head == null)
return head;
if (k <= 0)
return null;
ListNode p1, p2;
p1 =p2=head;
for (int i = 0; i < k - 1; i++)
{
if (p1.next == null)
return null;
p1 = p1.next;
}
while(p1.next!=null)
{
p1 = p1.next;
p2 = p2.next;
}
return p2;
}
}