首页 > 其他分享 >剑指Offer-03-数组中重复的数字

剑指Offer-03-数组中重复的数字

时间:2022-10-30 23:56:33浏览次数:78  
标签:03 arr return 数字 Offer int 重复 数组

剑指Offer-03数组中重复的数字

描述

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

数据范围:0\le n \le 10000 \0≤n≤10000

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

代码

法一:通过数组索引位置判断

    public static int getduplicate01(int[] arr){
        if (arr==null||arr.length==0){
            return -1;
        }
        int len = arr.length;
        for (int i = 0; i < len; i++) {
            while (arr[i]!=i){
                if (arr[arr[i]]==arr[i])
                    return arr[i];
                int tmp = arr[i];
                arr[i] = arr[tmp];
                arr[tmp] = tmp;
            }
        }
        return  -1;
    }

法二:利用HashSet去重的特性

    public static int getduplicate02(int[] arr){
        if (arr==null||arr.length==0){
            return -1;
        }
        HashSet<Integer> solution = new HashSet<>();

        for (int i : arr) {
            if (solution.contains(i)){
                return i;
            }else{
                solution.add(i);
            }
        }
        return -1;
    }

标签:03,arr,return,数字,Offer,int,重复,数组
From: https://www.cnblogs.com/fufilforever/p/16842802.html

相关文章

  • 闲言碎语--1030
    积累要多,重点要少,洋洋洒洒一本书,就算能读下来的,可能也抓不住重点.但是太精炼了,有的人可能又读不懂,所以,积累要多,有丰富的经验,抽象要少,比如一堂......
  • P1803 凌乱的yyy / 线段覆盖
    题目背景快noip了,yyy很紧张!题目描述现在各大oj上有 nn 个比赛,每个比赛的开始、结束的时间点是知道的。yyy认为,参加越多的比赛,noip就能考的越好(假的)。所以......
  • 数组
    1.一维数组①三种定义方式:   回顾C:1)数组的每个元素都是相同的数类型2)数组放在一块连续的内存空间内②一维数组数组名:用途:1)统计整个数组在内存中的长度(sizeof(......
  • 【数据结构-数组】数组的相关算法
    目录1无序数组的排序——快速排序1.1升序排序1.2降序排序2有序数组的查找——折半查找(二分查找)2.1升序数组的查找2.2降序数组的查找3有序数组的合并——归并思想3.1......
  • 数组2
    冒泡算法voidbubble_sort(intarr[],intsz)//void为了排序完后不返回{inti=0;for(i=0;i<sz-1;i++){//intj=0;for(j=0;j<sz-1-......
  • 算法数组之种花问题
    题目假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组  flowerbed表示花坛,由若干0......
  • 排序算法之数组拆分
    题目给定长度为 2n 的整数数组nums,你的任务是将这些数分成 n对,例如(a1,b1),(a2,b2),...,(an,bn),使得从1到 n的min(ai,bi)总和最大。返回该最大总和......
  • 代码大全03
    1.翻译总体质量很好,但也有些翻译的不是很贴切,或者和当前惯例译法不一样的地方,可能会对理解造成障碍,但是译者会适时加上原本的单词,影响不是很大2.书中的......
  • 数组1
    基础语法形式/*intarr[10]={"qwe"};*/chararr1[]="qazxsw";printf("%d\n",sizeof(arr1));//sizeof计算所占空间大小(还要加上\0这个内存,所以有七个元素,计算变量,数组,......
  • 1035.uncrossed-lines 不相交的线
    问题描述1035.不相交的线解题思路只是1143.最长公共子序列的另一种描述代码#include<vector>usingstd::vector;classSolution{public:intmaxUncrossed......