数组中重复的数字(O(1))

来源:互联网 发布:u型耳夹淘宝 编辑:程序博客网 时间:2024/06/07 23:54
import java.util.Arrays;import java.util.Scanner;/** * 题:数组中重复的数字 * 要求:长度为n的数组里每个数都在0~n-1的范围内。数组中某些数字重复,但是不知道哪几个数字重复, * 也不知道重复了几次。找出数组中任意一个重复的数字 * 复杂度为O(1) ** Created by misfortune on 2017/10/26. */public class dulicate {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt();        int wait[] = new int[n];        for (int i = 0; i < n; i++) {            wait[i] = sc.nextInt();        }        Arrays.sort(wait);//O(nlogn)        operate(wait);        sc.close();        for(int i=0;i<n;i++){            System.out.print(wait[i]+" ");        }    }    public static void operate(int[] wait) {        int n=wait.length,temp;        if(n>2){            for(int i=0;i<n;i++){                if(wait[i]!=i){                    if(wait[wait[i]]==wait[i]){                        System.out.print(wait[i]+"重复!");                    }else{                        temp=wait[i];                        wait[i]=wait[temp];                        wait[temp]=temp;                    }                }            }        }    }}
原创粉丝点击