Golang 求数组和切片中出现次数最多的值和次数
程序员文章站
2022-06-03 08:41:54
...
求数组和切片中出现最多次数的值和次数
最近在学习Golang的过程中发现需要用到这些东西,原本以为Golang有类似PHP中的array_count_values() 函数,可最终我没有找到。经过百度发现有大佬在博客写过这个func,所以我将其copy下来并做了一些小的修改&&加了点注释。在此也感谢那位大佬的func。代码如下:
注意:func中用的是int,如果你们的类型不同导致报错可能需要修改类型
//求数组中出现次数最多的值和次数
func ArrayCountValues(args []int) (Status bool, MaxCount int, MaxValue []int) {
/*【1】没值直接退出*/
if len(args) == 0 {
return false, 0, nil
}
/*【2】求出每个值对应出现的次数,例:[值:次数,值:次数]*/
newMap := make(map[int]int)
for _, value := range args {
if newMap[value] != 0 {
newMap[value]++
} else {
newMap[value] = 1
}
}
/*【3】求出出现最多的次数*/
var allCount []int //所有的次数
var maxCount int //出现最多的次数
for _, value := range newMap {
allCount = append(allCount, value)
}
maxCount = allCount[0]
for i := 0; i < len(allCount); i++ {
if maxCount < allCount[i] {
maxCount = allCount[i]
}
}
/*【4】求数组中出现次数最多的值,例:[8,9]这个两个值出现的次数一样多*/
var maxValue []int
for key, value := range newMap {
if value == maxCount {
maxValue = append(maxValue, key)
}
}
return true, maxCount, maxValue
}
转自:https://blog.csdn.net/samete9011/article/details/72834675
注:如果你有好的建议或者意见,欢迎交流讨论
上一篇: Python中冒号(:)在切片中的使用
下一篇: Linux 获取网卡信息