如何在go中创建地图并查找重复项



我是新手,不知道如何完成这项任务:

编写一个程序,在第一行读取标准输入范围[1;9]中的连续位数,然后被加载到数组中。然后打印重复实例的数量指定数组值的值转换为标准输出。

Input:
7
1 1 2 2 1 3 5
Output:
1: 3
2: 2
3: 1
5: 1

我已经完成了一半的任务,但我不知道如何通过地图进行重复跟踪

func main() {
var numbers int
fmt.Println("num: ")
fmt.Scan(&numbers)
var numArr int
var i = 1
arr := make([]int, 0)
if numbers <= 9 {
for ; i <= numbers; i++ {
fmt.Println("numArr: ")
fmt.Scan(&numArr)
if numArr < 9 {
arr = append(arr, numArr)
} else {
fmt.Println("sorry write the number up to 9")
break
}
}
} else {
fmt.Println("Max Numbers = 9")
}
fmt.Println(arr)
m := make(map[int]int)
for key, v := range arr {


}

看起来您正在使用map[Value From File]Count填充映射。因此,每个接收到的不同数字都会有一个条目,映射中保存的值将是该值(键(被看到的次数。填充这样一个地图的简单方法是:

for _, v := range arr {
m[v]++
}

游乐场。请注意,map是无序的,因此在输出结果之前可能需要对结果进行排序。

注意:您可以通过将愉快的路径对齐到左边(即(来简化代码(并修复一个细微的错误(

if numbers > 9 {
fmt.Println("Max Numbers = 9")
return // Important - otherwise we will still try to find duplicates in the 'large' slice
}
// Do stuff that should happen when we have 9 or fewer ints

最新更新