题解 | #链表中倒数最后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
    }

}
全部评论

相关推荐

09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务