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方法本身就需要判断元素是否重复.
------解决方案--------------------