Поиск уникального числа

Поиск уникального числа


Решаю задачу.

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
}






Report Page