您的位置:首页 > 编程语言 > Java开发

java实现找数组中重复数字

2017-08-18 14:36 453 查看
package offer;
/*
* 在长度为n的数组里所有数字都在0~n-1的范围之内。找出数组中的重复数字
* 时间复杂度O(n) 空间复杂度也是O(n)
* */
public class FindDuplicate1 {
public static void main(String[] args) {
int numbers[]={0,1,2,3,4,5,1,2,3,6};
findDuplicate(numbers);
}
static void findDuplicate(int numbers[])
{
if(numbers==null || numbers.length==0)
return ;
int numbers2[]=new int[numbers.length];//已经进行了自动的初始化
int i=0;
for( i=0 ;i<numbers.length;i++)
{
if(++numbers2[numbers[i]]>1)
{
System.out.println(numbers[i]);
break;
}
}
if(i==numbers.length)
System.out.println("No dulicate number");
}
}

package offer;
/**
* 时间复杂度O(n) 空间复杂度也是O(1)
*/
public class FindDuplicate {
public static void main(String[] args) {
int numbers[] = { 0, 1, 2, 3, 4, 5, 1, 2, 3, 6 };
findDuplicate(numbers);
}

static void findDuplicate(int numbers[]) {
if (numbers == null || numbers.length == 0)
return;
int i=0;
for(i=0;i<numbers.length;i++)
{
if(numbers[i]!=i && numbers[numbers[i]]!=numbers[i])
swap(numbers[i],numbers[numbers[i]]);
else if(numbers[i]!=i && numbers[numbers[i]]==numbers[i])
{
System.out.println(numbers[i]);
break;
}
}
if(i==numbers.length)
System.out.println("No dulicate number");
}
static void swap(int number1,int number2)
{
int tmp=number1;
number1=number2;
number2=tmp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: