• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:剑指offer01找出数组中重复的数字

java 搞代码 3年前 (2022-02-19) 38次浏览 已收录 0个评论
文章目录[隐藏]

剑指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);
        }
    }
}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:剑指offer01找出数组中重复的数字
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址