Поиск уникального числа
Решаю задачу.

import "fmt"
func main() {
var sizeArr int
fmt.Scan(&sizeArr)
arr := make([]int, sizeArr)
for i := 0; i < sizeArr; i++ {
fmt.Scan(&arr[i])
}
fmt.Println(countUnique(arr))
}
func countUnique(arr []int) int {
count := 0
sizeArr := len(arr)
for i := 0; i < sizeArr; i++ {
temp := true
for j := 0; j < sizeArr; j++ {
if i != j && arr[i] == arr[j] {
temp = false
break
}
}
if temp {
count++
}
}
return count
}
Написал тесты:
{[]int{1, 1, 1, 1, 1}, 0},
{[]int{1, 2, 2, 3, 4, 4, 5}, 3},
{[]int{1, 2, 3, 4, 4, 5, 5, 6}, 4},
{[]int{}, 0},
{[]int{100, -100, 100, 200, -200}, 3},
{[]int{1, 1, 2, 3, 4, 5, 5}, 3},
{[]int{-1, -2, -2, 1, 2, 2}, 2},
{[]int{0, 1, 1, 1, 1}, 1},
{[]int{-2, -100, -2, -100, 0}, 1},
{[]int{-100, -100, -2, -100, 0}, 2},
{[]int{-100, -100, 2, -100, 0}, 2},
{[]int{1, 1, 1, 2, 2, 2, 3, 3, 3, 5}, 1},
{[]int{0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 1},
{[]int{0, 0, 1, 1, 0}, 0},
Но на платформе на каком-то закрытом тесте рубит: Превышен лимит времени - 2 с - 4,64 МБ Подскажите, в какую строну смотреть
Спасибо всем за советы. Прошло такое решение. Код с комментами.
package main
import "fmt"
func main() {
var sizeArr int
fmt.Scan(&sizeArr)
// Создаем мапу
arrMap := mapCreate(sizeArr)
// Подсчитываем уникальные числа и выводим результат
fmt.Println(countUnique(arrMap))
}
// Функция для создания мапы
func mapCreate(sizeArr int) map[int]int {
var num int
arrMap := make(map[int]int)
for i := 0; i < sizeArr; i++ {
fmt.Scan(&num)
// Считаем количество вхождений каждого числа
arrMap[num]++
}
return arrMap
}
// Функция для подсчета уникальных чисел
func countUnique(arrMap map[int]int) int {
tempUnique := 0
for _, count := range arrMap {
if count == 1 { // встречается ли число только 1 раз
tempUnique++
}
}
return tempUnique
}