美文网首页
剑指Offer 3 找出数组中重复的数字

剑指Offer 3 找出数组中重复的数字

作者: CarryKai的凯 | 来源:发表于2021-04-24 21:29 被阅读0次

    题目描述:

    找出数组中重复的数字。
    
    在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
    
    示例 1:
    
    输入:
    [2, 3, 1, 0, 2, 5, 3]
    输出:2 或 3 
    复制代码
    

    代码:

    class Solution {
        public int findRepeatNumber(int[] nums) {
            //利用set集合进行查找重复的数字
            Set<Integer> set = new HashSet<>();
            int repeat = -1;
            for(int num: nums){
              if(!set.add(num)){
                repeat = num;
                break;
               }
            }
            return repeat;
            }
    }
    复制代码
    
    image.png

    代码

    class Solution {
        public int findRepeatNumber(int[] nums) {
            //先进行排序
            Arrays.sort(nums);
            int repeat = 0;
            //原地寻找重复的元素
        if(nums[0] != nums[1]) repeat = nums[0];
        for(int i=1;i<nums.length-1;i++){
                if(nums[i]==nums[i-1] || nums[i]==nums[i+1]){
                    repeat = nums[i];
                  }
            }
            if(nums[nums.length-1] == nums[nums.length-2]) {
            repeat=nums[nums.length-1];
            }
            return repeat; 
        }
    }
    复制代码
    
    image.png

    相关文章

      网友评论

          本文标题:剑指Offer 3 找出数组中重复的数字

          本文链接:https://www.haomeiwen.com/subject/jealrltx.html