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

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

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

6个回答

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;
}
weixin_37486553
燕双嘤嘤 这个搞出来的不对吧,找出来的值是2
大约一年之前 回复

建议用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];
}
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐