文章目录[隐藏]
剑指offer
1、找出数组中反复的数字。
题目形容:
找出数组中反复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范畴内。数组中某些数字是反复的,但不晓得有几个数字反复了,也不晓得每个数字反复了几次。请找出数组中任意一个反复的数字。
示例 :
输出: [2, 3, 1, 0, 2, 5, 3] 输入:2 或 3
示例答案:
/** 1、初始化汇合为空集合,反复的数字 repeat = -1 2、遍历数组中的每个元素: 将该元素退出HashSet汇合中,判断是否增加胜利<p style="color:transparent">来源gao!%daima.com搞$代*!码网</p> 如果增加失败,阐明该元素曾经在汇合中,因而该元素是反复元素,将该元素的值赋给 repeat,并完结遍历 3、返回 repeat */ class Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashSet<Integer>(); int repeat = -1; for (int num : nums) { if (!set.add(num)) { repeat = num; break; } } return repeat; } }
改良IDEA运行版本答案:
package com.java.offer_75; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Solution { public HashSet findRepeatNumber(int[] nums) { HashSet<Integer> set = new HashSet<Integer>(); HashSet<Integer> set2 = new HashSet<Integer>(); for (int num : nums) { if (!set.add(num)) { set2.add(num); } } return set2; } public static void main(String[] args) { int [] nums=new int[]{2,5,2,1,5,3,3}; Solution solution=new Solution(); HashSet repeatNumber = solution.findRepeatNumber(nums); System.out.println("剑指offer第一题:数组中反复的数字n"); System.out.println("反复的数字为:"); Iterator iterator = repeatNumber.iterator(); while (iterator.hasNext()){ Object next = iterator.next(); System.out.println(next); } } }