【发布时间】:2020-06-02 13:19:04
【问题描述】:
我有一个由 N 个整数组成的非空数组 A。该数组包含奇数个元素,并且该数组的每个元素都可以与另一个具有相同值的元素配对,除了一个未配对的元素。
例如,在数组 A 中,如下所示:
A[0] = 9 , A[1] = 3 , A[2] = 9 , A[3] = 3 , A[4] = 9 , A[5] = 7 , A[6] = 9
我需要编写一个函数来返回未配对元素的值。
我的第一个本地解决方案之一是创建一个具有唯一键的哈希图结构 - 给定数组的 N 个整数,如果哈希图中已经存在键,则遍历数组添加值。毕竟,在它的 value 字段中只有 1 的键是未配对的元素。
我知道 Integer 的哈希码是它的 int 唯一值... 所以我希望不会有不同整数的重复键..所以我认为不同整数不会有重复键..但是对于大量数据,这个解决方案不起作用......我认为这个与负载系数有关。 但我上不去。我不需要替代解决方案,因为我已经有了它,我只想了解当我们使用大量整数键时 hashmap 有什么问题.. 这是我的代码,非常感谢!: 映射 a = new HashMap();
for(int i=0;i<A.length;i++) {
if(a.containsKey(A[i])){
a.put(A[i], a.get(A[i])+1);
}else a.put(A[i], 1);
}
for (Integer i : a.keySet()) {
if(a.get(i)==1)
return i;
}
return -1;
【问题讨论】: