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

}
全部评论

相关推荐

2025-12-18 18:50
已编辑
门头沟学院 golang
牛客33637108...:重点是要事已密成,在没有进入这家公司之前,不要有任何的泄露信息,我之前跟你一样,面了一家光伏设备厂,底薪7500加上出差补贴大概有13,000左右,已经给了口头offer了,甚至要了我的在校成绩的所有信息,还向我要了三方的网签二维码,到后面还是毁约了,我干过最愚蠢的事情就是向同学透露要签三方的事,之后的失败只会让他们幸灾乐祸,这是即将结束的大学生活给我的最后一课,不要相信任何的口头三方,该面的就去面,甚至签了三方也有毁约的可能,就像我现在签了三方还在外面实习呢,春招还是要继续参加的,不能停止面试,不然到后面毁三方的时候,重新捡起的面试很麻烦的,这是我一点点小小的见解。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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