@sergey_fs

Условие если N одинаковых элементов в массиве?

Коллеги подскажите как вычислить количество одинаковых элементов в массиве

есть массив
[{4} {6} {7} {7} {6} {2} {2}]

var data = make(map[string][]goip)
data["statistick_bad_line"] = goip_f
flog.Info(data)
fmt.Println("len massive ",len(goip_f)) ///вычисляю длину массива
for i := 0 ; i < len(goip_f) ; i++{
fmt.Println("For cikle",i,goip_f[i])
/////Проверяю если номер повторился несколько раз то блочу сим карту
///и отправляю в телеграм оповешение

}
  • Вопрос задан
  • 1431 просмотр
Пригласить эксперта
Ответы на вопрос 2
dmpichugin
@dmpichugin
Gopher
С этой задачей можно легко справиться с помощью map.
package main

import (
	"fmt"
)

func main() {
	result := make(map[int]int)
	s := []int{1, 1, 1, 2, 3, 4, 5, 5, 6, 7, 7}
	for _, v := range s {
		result[v]++
	}
	fmt.Println(result)
}

Например, нужно вывести кто повторяется.
for k, v := range result {
		if v >= 2 {
			fmt.Printf("key = %d, count = %d\n", k, v)
		}
}
Ответ написан
Комментировать
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
package main

import "fmt"

// Структура для сохранения результатов
type concurrences struct {
	number int
	count int
}

// Функция для инкремента элемента
func inc(num int) {
	changed := false
	for i:=0; i < len(conc); i++  {
		if conc[i].number == num {
			conc[i].count++
			changed = true
			break
		}
	}
	if !changed {
		conc = append(conc, concurrences{num, 1})
	}
}

var conc = []concurrences{}

// Массив с элементами
var numbers = []int{1, 2, 6, 2, 1, 9, 0, 3}

func main() {

	for i:=0; i < len(numbers); i++  {
		inc(numbers[i])
	}

	// Отдаст элемент и кол-во его вхождений в массив
	// [{1 2} {2 2} {6 1} {9 1} {0 1} {3 1}]
	fmt.Println(conc)

	 // N - кол-во вхождений элемента в массив
	 N := 2

	 // Выводим все элементы которые есть в массиве N раз
	 for i:=0; i < len(conc); i++ {
		if conc[i].count == N {
			fmt.Println(conc[i].number)
		}
	 }

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы