题解 | #输出单向链表中倒数第k个结点#

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

package main

import (
    "fmt"
)

// type ListNode struct {
//     Val int
//     Next *ListNode
// }

func createListNode(nums []int) *ListNode {
    dummy := ListNode{}
    p := &dummy

    for _, num := range nums {
        node := ListNode{Val: num, Next: nil}
        p.Next = &node
        p = p.Next
    }

    return dummy.Next
}

func findLastKNode(head *ListNode, k int) int {
    slow, fast := head, head
    for i:=0; i<k; i++ {
        fast = fast.Next
    }

    for fast != nil {
        slow = slow.Next
        fast = fast.Next
    }

    return slow.Val
}

func main() {
    for true {
        var m int
        n, _ := fmt.Scan(&m)
        if n == 0 {
            break
        }

        var nums []int
        for i:=0; i<m; i++ {
            var num int
            fmt.Scan(&num)
            nums = append(nums, num)
        }

        var k int
        fmt.Scan(&k)

        head := createListNode(nums)

        val := findLastKNode(head, k)

        fmt.Println(val)
    }
}
// 本题输入为多组用例,所以采用:fmt.Scan(&m)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务