急!!!求助大神,找出一个数组中第一个重复出现两次的元素,没有则返回空。

找出一个数组中第一个重复出现两次的元素,没有则返回空。
例如[1,2,3,4,5,2,3,4,2],重复两次的是3和4,3比4先出现,结果为3

```public int getFirstDoubleRepetitiveltem(int[] items){
return null;
}

public Integer getFirstDoubleRepetitiveltem(int[] items){
for (int i = 1; i < items.length; i++)
for (int j = 0; j < i; j++)
if (items[i] == item[j]) return new Integer(items[i]);
return null;
}

建议用java中的set做为存储结构。
时间复杂度O(n)。创建一个set然后往里面插入数据前判断是否已经存在。
如果存在,返回,不存在,就添加。
遍历到末尾返回空。

public Integer getFirstDoubleItem(Integer[] items){
        Map<Integer,Integer> countMap = new HashMap<>();
        for (int i = 1,length=items.length; i < length; i++){
            if(countMap.containsKey(items[i])){
                return items[i];
            }else {
                countMap.put(items[i],1);
            }
        }
        return null;
    }

创建一个set,把你的数组里的数一次放set里放,每次放了都判断一下set有没有增加,如果没有增加那说明刚放进去的那个数儿就是第一次重复的。复杂度为O

public static Integer get(int[] items,int count){
Map map = new HashMap();
for(int i :items){
map.put(i, (map.get(i) == null) ? 1 : map.get(i) + 1);
}
List list=new ArrayList();
for (Map.Entry m :map.entrySet()){
if (m.getValue()==2){
return m.getKey();
}
}

public Integer getFirstDoubleRepetitiveItem(Integer[] items) {
int i;
for (i = 0; i < items.length-1; i++) {
int flag = 1;
for (int j = 0; j < items.length; j++) {
if (i==j) {
continue;
}
if (items[i] == items[j]) {
flag++;
}
}
if (flag == 2) {
break;
}
}
System.out.println("i:"+i);
if (i==items.length-1) {
return null;
} else {
return items[i];
}
}