题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
http://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
两步走
第一步得判断边界
第二步计算链表长度cnt,循环将pHead指向cnt-k链表的长度
func FindKthToTail(pHead *ListNode, k int) *ListNode {
// write code here
if pHead == nil {
return nil
}
var cnt int
p := pHead
for p != nil {
p = p.Next
cnt++
}
if k > cnt {
return nil
}
for i := 0; i < cnt-k; i++ {
pHead = pHead.Next
}
return pHead
}PS:
创建链表
func Create(array []int) *ListNode {
root := new(ListNode)
cur := root
for i := 0; i < len(array); i++ {
tmp := new(ListNode)
tmp.Val = array[i]
cur.Next = tmp
cur = cur.Next
}
return root.Next
}
func main() {
array := []int{1, 2, 3, 4, 5}
pHead := Create(array)
pHead = FindKthToTail(pHead, 2)
for pHead!=nil {
fmt.Println(pHead.Val)
pHead = pHead.Next
}
}
