數(shù)組中的重復(fù)數(shù)字

劍指offer面試題3,找出數(shù)組中的重復(fù)數(shù)字(java實現(xiàn))

給定一個長度為 n 的整數(shù)數(shù)組?num,數(shù)組中所有的數(shù)字都在 0~n的范圍內(nèi)。

數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù)了,也不知道每個數(shù)字重復(fù)了幾次。

請找出數(shù)組中任意一個重復(fù)的數(shù)字。

解法:對于長度為n的數(shù)組,數(shù)字都在0~n之間。根據(jù)鴿籠原理,一定存在重復(fù)的數(shù)字。如果沒有重復(fù)度的數(shù)字,將數(shù)組排序之后所有的數(shù)字都和它的下標(biāo)是一致的。所以這里,我們可以將所有的數(shù)字放回到與它一致的下標(biāo)中,如果在下標(biāo)處已經(jīng)存在改數(shù)字,那么久找到了重復(fù)的數(shù)字。

public class RepeatNumber {

? ? public static void main(String[] args){

? ? ? ? RepeatNumber rn =new RepeatNumber();

? ? ? ????? int[] num =new int[]{2,3,1,0,2,5,3};

? ? ? ????? System.out.println(rn.repeatNumber(num));

? ? }

????public int repeatNumber(int[] num){

????????if(num.length==0)????return -1;

? ? ? ????? for(int i=0;i<num.length;){

? ? ? ? ? ? ? ? ? ?if(num[i] != i){

????????????????????????if(num[num[i]] == num[i]){

????????????????????????????return num[i];

? ? ? ? ? ? ? ????????? }else{

????????????????????????????int tem = num[i];

? ? ? ? ? ? ? ? ? ????????? num[i] = num[num[i]];

? ? ? ? ? ? ? ? ? ????????? num[tem] = tem;

? ? ? ? ? ? ? ????????? }

????????????????????}

? ? ? ? ? ? ? ? ? ? ? i++;

? ? ? ????????? }

????????????return -1;

? ????? }

? ?}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,142評論 0 2
  • 什么是數(shù)組? 數(shù)組簡單來說就是將所有的數(shù)據(jù)排成一排存放在系統(tǒng)分配的一個內(nèi)存塊上,通過使用特定元素的索引作為數(shù)組的下...
    啟明_b56f閱讀 1,099評論 0 0
  • Java經(jīng)典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 2,075評論 0 2
  • 星一盤,月一盤,剔透玲瓏水里船,相思念最難 水一環(huán),風(fēng)一環(huán),渡口思君些許年,淚殘難入眠
    天蓬元帥_f271閱讀 214評論 0 4
  • 十一月在不知不覺中悄然過去,除了那一次全民狂歡的雙十一盛典外,幾乎沒有留下其它任何值得懷念的記憶。也正是由于那次過...
    夏野閱讀 272評論 0 0

友情鏈接更多精彩內(nèi)容