Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中-检查数组是否有只显示一次的数字的方法?_Java - Fatal编程技术网

在java中-检查数组是否有只显示一次的数字的方法?

在java中-检查数组是否有只显示一次的数字的方法?,java,Java,我想编写一个方法,获取一个int数组,如果数组中的数字只出现一次,则返回true。 如何以最低的运行时间和空间使用率做到这一点 谢谢大家创建一个,迭代数组:对于数组中的每个x:如果x不在映射中[作为键],则将(x,1)插入映射,否则:将(x,map.value(x)+1)插入映射 迭代映射,查找是否有值为1的键,如果有则返回true,否则返回false 它是O(n)时间复杂度和O(n)空间复杂度 伪代码: hasUnique(array): map <- new hashMap

我想编写一个方法,获取一个int数组,如果数组中的数字只出现一次,则返回true。 如何以最低的运行时间和空间使用率做到这一点

谢谢大家

创建一个,迭代数组:对于数组中的每个x:如果x不在映射中[作为键],则将(x,1)插入映射,否则:将(x,map.value(x)+1)插入映射


迭代映射,查找是否有值为1的键,如果有则返回true,否则返回false

它是
O(n)
时间复杂度和
O(n)
空间复杂度

伪代码:

hasUnique(array):
   map <- new hashMap
   for each x in array:
       if (map.get(x) == null): map.put(x,1)
       else: map.put(x,map.get(x)+1)
   for each key in map.keySet():
       if (map.get(key) == 1) return true
   return false
hasinque(数组):

map我可能会尝试对数组进行排序(qsort算法非常快),然后在数组上迭代一次,然后找到左右不相同的元素

您还可以将元素放入哈希映射,其中键是元素和值-出现次数

//编辑:
正如阿米特所说,哈希集也是一个选项。

这是家庭作业吗?你想到了什么策略?最好用例子解释一下。。。如果数组是{1,2,3,4,5},{1,2,3,4,5,2},如果一个算法有O(n)个运行时间和O(1)个空间复杂度,另一个算法有O(1)个运行时间和O(n)个空间复杂度,那么哪个算法的运行时间和空间使用率最低呢?@LuchianGrigore:很好的一点,我自己说得再好不过了。空间复杂度呢?是O(n)。@aix:我编辑过,一开始我误读了这个问题。卢钦:这确实是O(n)空间的复杂性。