日期:2014-05-20  浏览次数:20777 次

int数组有{1,2,1,3,3,2},如果数组里的值重复,返回true(急求)
int数组有{1,2,1,3,3,2},如果数组里的值重复,返回true(急求)

------解决方案--------------------
这个应该类似于选择排序法吧 只是判断是时候不同而已

int [] arr = {1,2,4,5,1,3,4,2};
flag = false;
for(int i=0; i <arr.length(); i++){
for(int j=i+1; j <arr.length();j++){
if(arr[i] ==arr[j] ){
flag = true;
}
}
}
return flag;

把上面的代码写到一个方法中就行了

------解决方案--------------------
public boolean falg(int array[])
{
for(int i=0; i <array.length(); i++){
for(int j=i+1; j <array.length();j++){
if(array[i] ==arrarrayj] ){
return true;
}
}
}
return false;

}

------解决方案--------------------
boolean s=false;
int[] a={1,2,3,5,6};
for(int i=1;i <a.length;i++){
for(int j=0;j <i;j++){
if(a[i]==a[j]){
s=!s;
}
}
}
return s;
------解决方案--------------------
貌似有个效率的.
------解决方案--------------------
这个问题,确实有效率。
------解决方案--------------------
大家给的都是节省空间的算法,还有一种用空间换时间的算法,O(n)=n。不过如果int[]中的元素是负数就不行了。
public static boolean isRepeat(int[] data){
int dataLen=data.length;
boolean[] container;
int maxVal=0;
for(int i=0;i <dataLen;i++){ //求目标数组里的最大值
if(maxVal <data[i]) maxVal=data[i];
}
container=new boolean[maxVal+1];//建立一个容器数组,长度为目标数组里的最大值
for(int j=0;j <dataLen;j++){
/*容器数组内,第一次碰到,下标为目标数组元素值的元素时,把值改为true*/
if(container[data[j]]==false) container[data[j]]=true;
/*当碰到容器数组内,true值时,证明有重复元素*/
else return true;
}
return false;
}
------解决方案--------------------
楼上的方法是不错地,O(n)的时间复杂度。
你可以再扩展下思维,用2n+1的空间。那不就可以处理负数的
清况啦。
------解决方案--------------------
import java.util.HashSet;
import java.util.Set;


/**
* @author jungles
*
*/
public class UniqueItem {

public static boolean judge( Object [] array ) {

if( null == array )
return false;
int size = array.length;
Set <Object> uniqueElement = new HashSet <Object> ();
for( int i = 0; i < size; i ++ ) {

uniqueElement.add( array[ i ] );
}
return ( size == uniqueElement.size()?false:true );
}
}
/**
* @author jungles
*
*/
public class Main {

/**
* @param args
*/
public static void main(String[] args) {


Integer array[] = {1,2,3,4};
System.out.println( UniqueItem.judge( array ));
}

}

哈哈,这个的时间复杂度是O(n),空间复杂度也是n的线性函数。对于楼主的情况,需要用Integer替换int。程序在JDK1.6下测试通过。

------解决方案--------------------
同上
------解决方案--------------------
to: SanFire(SanFire)

考虑过HashSet的add方法的复杂度嘛?
add方法本身就需要判断元素是否重复.
------解决方案--------------------