题解 | #输出单向链表中倒数第k个结点#
输出单向链表中倒数第k个结点
https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d
package main
import (
"fmt"
)
// type ListNode struct {
// Val int
// Next *ListNode
// }
func main() {
for {
var n int
_, err := fmt.Scan(&n)
if err != nil {
return
}
nums := make([]int, 0, n)
for i := 0; i < n; i++ {
v := 0
fmt.Scan(&v)
nums = append(nums, v)
}
var k int
fmt.Scan(&k)
head := createList(nums)
node := findNode(head, k)
if node != nil {
fmt.Println(node.Val)
}
}
}
func createList(nums []int) *ListNode {
dumpy := new(ListNode)
head := dumpy
for i := 0; i < len(nums); i++ {
node := ListNode{
Val: nums[i],
}
head.Next = &node
head = head.Next
}
return dumpy.Next
}
func findNode(head *ListNode, k int) *ListNode {
if head == nil {
return nil
}
p1 := head
for i := 0; i < k; i++ {
p1 = p1.Next
}
p2 := head
for p1 != nil {
p1 = p1.Next
p2 = p2.Next
}
return p2
}

