28 lines
557 B
Go
28 lines
557 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {
|
|
fmt.Println(mode([]interface{}{.2, .7, .1, .8, .2}))
|
|
fmt.Println(mode([]interface{}{"two", 7, 1, 8, "two", 8}))
|
|
}
|
|
|
|
func mode(a []interface{}) []interface{} {
|
|
m := make(map[interface{}]int)
|
|
for _, v := range a {
|
|
m[v]++
|
|
}
|
|
var mode []interface{}
|
|
var n int
|
|
for k, v := range m {
|
|
switch {
|
|
case v < n:
|
|
case v > n:
|
|
n = v
|
|
mode = append(mode[:0], k)
|
|
default:
|
|
mode = append(mode, k)
|
|
}
|
|
}
|
|
return mode
|
|
}
|