java实现找数组中重复数字

来源:互联网 发布:通信网络优化培训 编辑:程序博客网 时间:2024/06/01 03:58
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;}}

原创粉丝点击