剑指offer 03. 数组中重复的数字(利用set的奇异性)

1.题目描述

剑指offer 03. 数组中重复的数字(利用set的奇异性)_第1张图片

2.题解思路

由于题目只需要找到任意一个重复的数字,因此可以遍历数组,同时将遇到的每一个数组加到集合中,如果出现添加失败的情况,就代表该数字已经添加过一遍了。

算法:

  • 初始化一个空集合
  • 遍历数组,并添加数字进行集合
  • 如果添加失败,就说明元素已经在集合中,直接返回即可

3.代码

class Solution {
    public int findRepeatNumber(int[] nums) {
        Set set = new HashSet();
        int repeat = -1;
        for(int num : nums){
            if(!set.add(num)){
                //添加失败,返回值并退出循环
                repeat = num;
                break;
            }
        }
        return repeat;
    }
}

4.结果

剑指offer 03. 数组中重复的数字(利用set的奇异性)_第2张图片

 

 

你可能感兴趣的:(算法,数据结构,leetcode,java,剑指Offer)