温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java如何找出数组中重复的数字

发布时间:2021-06-23 15:04:15 来源:亿速云 阅读:506 作者:chen 栏目:编程语言

本篇内容主要讲解“java如何找出数组中重复的数字”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java如何找出数组中重复的数字”吧!

数组中重复的数字

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof

示列:

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

// 1 思路简单:双重循环,时间复杂度:O(n^2),空间占用少,但时间还可以优化【2353ms 46.1MB】

class Solution {
    public int findRepeatNumber(int[] nums) {
        int len = nums.length;
        for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                if(nums[i] == nums[j]){
                    return nums[i];
                }
            }
        }
        return -1;
    }
}

// 2 HashMap保存出现的数字【10ms 47.3MB】

class Solution {
    public int findRepeatNumber(int[] nums) {
        int len = nums.length;
        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        for(int i=0;i<len;i++){
            if(map.containsKey(nums[i])){
                return nums[i];
            }
            map.put(nums[i],1);
        }
        return -1;
    }
}

// 3 数组长度为n,且数组元素的范围在0 ~ n-1之间,在遍历的过程中,将元素移动到对应的下标(while)【0ms 46MB】

class Solution {
    public int findRepeatNumber(int[] nums) {
        int len = nums.length;
        int temp;
        for(int i=0;i<len;i++){
            while(nums[i] != i){
                if(nums[i] == nums[nums[i]]){
                    return nums[i];
                } // 这块代码我开始是放在了交换语句下面,出错了。当该位置的值归为后就退出了程序【 nums[0] == nums[nums[0]] 】
                temp = nums[nums[i]];
                nums[nums[i]] = nums[i];
                nums[i] = temp;
            }
        }
        return -1;
    }
}

到此,相信大家对“java如何找出数组中重复的数字”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI