当前位置:网站首页>【剑指offer】---数组中的重复数字

【剑指offer】---数组中的重复数字

2022-08-10 13:36:00 半夏而凉


​第四次打卡!!!

活动地址:CSDN21天学习挑战赛

题目描述

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1。

数据范围:0≤n≤10000 

进阶:时间复杂度O(n) ,空间复杂度O(n)

示例 

​输入:[2,3,1,0,2,5,3]

返回值:2

说明:2或3都是对的

代码

方法一:两层遍历

public class Solution {

    /**

     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可

     *

     *

     * @param numbers int整型一维数组

     * @return int整型

     */

    public int duplicate (int[] numbers) {

        // write code here

        int n=numbers.length;

        if(n<2) return -1;

 

        for(int i=0;i<n-1;i++){

            for(int j=i+1;j<n;j++){

                if(numbers[i]==numbers[j])

                    return numbers[i];

            }

        }

        return -1;

         

    }

方法二:hashmap

 public int duplicate (int[] numbers) {
        // write code here
        int n=numbers.length;
        if(n<2) return -1;
        HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
        for (int i=0; i<n; i++){
            if(!map.containsKey(numbers[i])){
                map.put(numbers[i],i);
            }
            else return numbers[i];
        }
         
        return -1;
    }

 

原网站

版权声明
本文为[半夏而凉]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_61801103/article/details/126230677