描述
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
数据范围:0 \leq n \leq 10^50≤n≤10
5
,0 \leq a_i \leq 10^90≤a
i
≤10
9
,0 \leq k \leq 10^90≤k≤10
9
要求:空间复杂度 O(n) ,时间复杂度 O(n)
进阶:空间复杂度 O(1) ,时间复杂度 O(n)
例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示:
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
func FindKthToTail( p *ListNode , k int ) *ListNode {
// write code here
if p==nil || p.Next ==nil { return p }
var slow,fast *ListNode
slow = p
fast = p
for i:=0;i<k;i++ {
if fast == nil { return nil }
fast = fast.Next
}
//fast != nil
for fast !=nil {
fast = fast.Next
slow = slow.Next
}
return slow
}