arrays - 如何在数组 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
}
解决方案
1.,它更像是一个数学问题。
2.,您始终应该将数组中存在的所有唯一整数作为@whitespace 提到的。但它更像是O(2n)
而不是O(n^2)
。您应该遍历原始数组,然后遍历长度为 <= n 的映射(在最坏的情况下n
,您的数组中有唯一项)。我在这里
创建了一个 go-playground 示例。
推荐阅读
- go - 如果我在 gin 中使用多个中间件,它们的执行顺序是什么
- angular - 为什么在我的 ngrx 效果中 Array.map 函数中的条件是必要的?
- mysql - 使用 GROUP BY 从 mySQL 获取重复值
- javascript - React.lazy 警告
- sql - 如何在 BigQuery 中像 EVAL 一样运行 SQL
- firebase - Firebase 托管未调用外部 APIS,我应该将哪个配置添加到 Firebase.json 以使其正常工作?
- swift - 如何将 NWPathMonitor 与 Alamofire 一起使用?
- html - 文本溢出省略号在 CSS 中不起作用
- python - 表 'xxx' 上的 UPDATE 语句预计更新 1 行;2 匹配
- windows - 21H1 中未显示 Windows 凭据提供程序