有1到100个数目字,将这些数字随机放到长度为100的数组中,其中有任意一个数字被1到100之外的数字替换,请找出被替换的数字

有1到100个数字,将这些数字随机放到长度为100的数组中,其中有任意一个数字被1到100之外的数字替换,请找出被替换的数字
问:有1到100个数字,将这些数字随机放到长度为100的数组中,其中有任意一个数字被1到100之外的数字替换,请找出被替换的数字?
要求不能对数组排序
算法题,要求效率,特别优秀的另开贴加分
------解决方案--------------------
都给出答案了么?
------解决方案--------------------

    for(int i=0;i<100;i++)   
     { 
        if(intArray[i]<1 
------解决方案--------------------
 intArray[i]>100)
        {
            就是这个了啊;
            break;
        }
     }


搞不懂lz在想啥?
------解决方案--------------------
随机数组。Arrays.sort(array) 排序下。

if(array[0] < 1){
   //有最小的
}else if(array[0] > 100){
   //来了个最大的
}

------解决方案--------------------
引用:
随机数组。Arrays.sort(array) 排序下。

if(array[0] < 1){
   //有最小的
}else if(array[array.length - 1] > 100){
   //来了个最大的
}


打错了
------解决方案--------------------
遍历一遍,找出小于1或者大于100的不就行了吗?  我觉得这是最效率的了。不知道此问题还有别的什么隐情!
------解决方案--------------------
100个数字,怎么看都是遍历最有效率
与其排序还不如遍历
我同楼上的不知道楼主在想啥
------解决方案--------------------
遍历判断即可了吧。还是楼主打算不便历然后还不排序直接找出?
------解决方案--------------------
引用:

    for(int i=0;i<100;i++)   
     { 
        if(intArray[i]<1 
------解决方案--------------------
 intArray[i]>100)
        {
            就是这个了啊;
            break;
        }
     }

搞不懂lz在想啥?


这个不错有1到100个数目字,将这些数字随机放到长度为100的数组中,其中有任意一个数字被1到100之外的数字替换,请找出被替换的数字
------解决方案--------------------
是可以这么理解吗?

Set<Integer> set = new HashSet<Integer>();

int repeatNum = -1;
int sum = 0;

for(int i=0;i<100;i++){
if(set.contains(numArr[i])){
repeatNum = numArr[i];
}else{
set.add(numArr[i]);
sum += numArr[i];
}
}
System.out.println("重复的数字: " + repeatNum);
System.out.println("被替换的数字: " + (5050-sum));

------解决方案--------------------
引用:
是可以这么理解吗?

Set<Integer> set = new HashSet<Integer>();

int repeatNum = -1;
int sum = 0;

for(int i=0;i<100;i++){
if(set.contains(numArr[i])){
repeatNum = numArr[i];
}else{
set.add(numArr[i]);
sum += numArr[i];
}
}
System.out.println("重复的数字: " + repeatNum);
System.out.println("被替换的数字: " + (5050-sum));


我靠,我理解错了
------解决方案--------------------
引用:

    for(int i=0;i<100;i++)   
     { 
        if(intArray[i]<1 
------解决方案--------------------
 intArray[i]>100)
        {
            就是这个了啊;
            break;
        }
     }


搞不懂lz在想啥?


这个只能找出替换后的数字,并不能确定源数组哪一个数字被替换
比如:
3,1,4,5,2 =》 3,1,4,10,2
只能确定替换后的数字10,不能求出源数组5被替换

------解决方案--------------------
引用:
Quote: 引用:


    for(int i=0;i<100;i++)   
     { 
        if(intArray[i]<1 
------解决方案--------------------
 intArray[i]>100)
        {
            就是这个了啊;
            break;
        }
     }