数组中重复的数字

范围已知的时候可以直接用数组搞定,否则用哈希。

数组法:

    /**
     * 
     * @title: duplicate 
     * @description: 查找数组中重复的数字,数字范围0~n
     */
    public static int duplicate(int[] arr, int n) {
        if(arr == null || arr.length<= 0) {
            return 0;
        }
        int[] temp = new int[n+1];
        for(int i = 0; i < arr.length; i++) {
            
            if(temp[arr[i]] != 0) {
                return arr[i];
            }else {
                temp[arr[i]] = 1;
            }
        }
        return 0;
    }

哈希法:

    /**
     * 
     * @title: duplicate 
     * @description: 查找数组中重复的数字
     */
    public static int duplicate(int[] arr) {
        if(arr == null || arr.length<= 0) {
            return -1;
        }
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i = 0; i < arr.length; i++) {
            if(map.containsKey(arr[i])) {
                return arr[i];
            }else {
                map.put(arr[i], 1);
            }
                
        }
        return -1;
    }

字符串中重复的字母:

    /**
     * 
     * @title: duplicate 
     * @description: 查找字符串中的重复字符
     */
    public static char duplicate(String str) {
        char[] arr = str.toCharArray();
        int[] temp = new int[128];
        for(int i = 0 ;i < str.length(); i++) {
            if(temp[arr[i]] != 0) {
                return arr[i];
            }else {
                temp[arr[i]] = 1;
            }
        }
        return 0;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容