题解 | #输出单向链表中倒数第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)
查看8道真题和解析