剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。


在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3 

限制:

2 <= n <= 100000

思路:
很简单就想到了HashMap或者Set

利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接返回

关键:查找到有出现过就可以直接返回

代码: 

class Solution {
    public int findRepeatNumber(int[] nums) {
        Set dic = new HashSet<>();
        for(int num : nums) {
            if(dic.contains(num)) return num;
            dic.add(num);
        }
        return -1;
    }
}

class Solution {
    public int findRepeatNumber(int[] nums) {
        int res=-1;
        HashMap map=new HashMap<>(); 
        for(int i:nums){
            if(map.containsKey(i)){
                res=i;                
            }
            else{
                map.put(i,1);
            }
        }
        return res;

    }
}

你可能感兴趣的:(java学习,算法,leetcode,数据结构)