首页 > 解决方案 > 如何在数组 Golang 中找到不重复的项目

问题描述

我有一个输入整数数组,它只有一个非重复数字,如 {1,1,3,2,3}。输出应显示非重复元素,即 2。

func main() {
    arr := make([]string, 0)
    scanner := bufio.NewScanner(os.Stdin)
    for {
        scanner.Scan()
        text := scanner.Text()
        if len(text) != 0 {
            arr = append(arr, text)
        } else {
            break
        }
    }
    uniq := Unique(arr)
    fmt.Println(uniq)
}

func Unique(arr []string) int {
    var uni int
    for i := 0; i < len(arr); i++ {
        for j := i + 1; j < len(arr); j++ {
            if(arr[i] != arr[j]){
                uni = i
            }
        }
    }
    return uni
}

标签: arraysgo

解决方案


1.,它更像是一个数学问题。
2.,您始终应该将数组中存在的所有唯一整数作为@whitespace 提到的。但它更像是O(2n)而不是O(n^2)。您应该遍历原始数组,然后遍历长度为 <= n 的映射(在最坏的情况下n,您的数组中有唯一项)。我在这里
创建了一个 go-playground 示例。


推荐阅读