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 s - 4.64 MB 告诉我该往哪个方向看......我已经伤透了脑筋。

谢谢大家的建议。这个决定已经通过了。带注释的代码。
您有一个复杂度为 O(n^2) 的算法。您可以尝试使用复杂度为 O(n*logn) 的算法对数组进行排序: https://proglib.io/p/7-sposobov-sortirovki-massivov-na-primere-ss-illyustraciyami-2022-04-20
或使用现成的内置解决方案,例如:https://code-basics.com/ru/languages/go/lessons/slice-sort
然后线性识别唯一值,因为您将保证知道相同的元素将彼此跟随
你可以这样做:
我会这样写:
输入:
结论:
该算法的复杂度为O(2n)。