面試算法積累找出數(shù)組中第一個重復的元素

找出數(shù)組中重復的數(shù)字

在一個長度為n的數(shù)組里的所有數(shù)字都在0到n-1的范圍內(nèi)次哈。 數(shù)組中某些數(shù)字是重復的溅话,但不知道有幾個數(shù)字是重復的。也不知道每個數(shù)字重復幾次收夸。請找出數(shù)組中任意一個重復的數(shù)字蜗顽。 例如布卡,如果輸入長度為7的數(shù)組{2,3,1,0,2,5,3},那么對應的輸出是重復的數(shù)字2或者3

下面是幾個解決這個問題的思路
  • 解決這個問題的簡單的辦法是把輸入的數(shù)組排序雇盖。然后從排序的數(shù)組中找出重復的元素忿等。從頭到位掃描一遍即可。用一個變量始終記錄著上一個元素崔挖。比較當前元素和上一個元素贸街。 排序一個長度為n的數(shù)組需要O(nlogn)的時間。

  • 我們還可以使用Hash表來解決這個問題狸相。創(chuàng)建一個Hash表薛匪,從頭到尾遍歷一遍。Hash表沒有的話則加入hash脓鹃,有的話則Value+1逸尖。這個算法的時間復雜度是O(n),但是它提高時間效率是以創(chuàng)建一個大小為O(n)的哈希表為代價的。

  • 還有一種方法是我們注意到0-n-1的范圍瘸右,如果沒有重復數(shù)字娇跟,那么排序之后數(shù)字i將出現(xiàn)在下標i的位置上,但是如果存在的話尊浓,某些位置就可能存在多個數(shù)組逞频,有的位置就可能不存在數(shù)字纯衍。

    解決這個問題的思路栋齿。從頭到尾掃描,比較m和位置i的關系襟诸。如果相等則掃描下一個瓦堵,如果不等的話,m和下標m的元素互換歌亲。然后繼續(xù)執(zhí)行菇用。先比較位置和數(shù)字自身的關系,如果相同則掃描下一個陷揪。如果等于的話則找到了惋鸥。如果不等的話杂穷,則繼續(xù)互換。

bool dumplcate(int numbers[],int  
                length,int*duplication){
if (numbers == nullptr||length<=0) {
    return false;
}
for (int i= 0; i<length; i++) {
    if (numbers[i]<0||numbers[i]>=length) {
        return false;
    }
}
for (int i=0; i<length; i++) {
    while (numbers[i] != i) { //只要下標和當前原色不相等卦绣,就繼續(xù)執(zhí)行
        int m = numbers[i];
        if (m == numbers[m]) {
            *duplication = m;
            return true;
        }
        int  transfer = numbers[m];
        numbers[i] = transfer;
        numbers[m] = m;
    }
}
return  false;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耐量,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滤港,更是在濱河造成了極大的恐慌廊蜒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溅漾,死亡現(xiàn)場離奇詭異山叮,居然都是意外死亡,警方通過查閱死者的電腦和手機添履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門屁倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暮胧,你說我怎么就攤上這事汰现。” “怎么了叔壤?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵瞎饲,是天一觀的道長。 經(jīng)常有香客問我炼绘,道長嗅战,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任俺亮,我火速辦了婚禮驮捍,結果婚禮上,老公的妹妹穿的比我還像新娘脚曾。我一直安慰自己东且,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布本讥。 她就那樣靜靜地躺著珊泳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拷沸。 梳的紋絲不亂的頭發(fā)上色查,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音撞芍,去河邊找鬼秧了。 笑死,一個胖子當著我的面吹牛序无,可吹牛的內(nèi)容都是我干的验毡。 我是一名探鬼主播衡创,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晶通!你這毒婦竟也來了钧汹?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤录择,失蹤者是張志新(化名)和其女友劉穎拔莱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隘竭,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡塘秦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了动看。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尊剔。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖菱皆,靈堂內(nèi)的尸體忽然破棺而出须误,到底是詐尸還是另有隱情,我是刑警寧澤仇轻,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布京痢,位于F島的核電站,受9級特大地震影響篷店,放射性物質(zhì)發(fā)生泄漏祭椰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一疲陕、第九天 我趴在偏房一處隱蔽的房頂上張望方淤。 院中可真熱鬧,春花似錦蹄殃、人聲如沸携茂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讳苦。三九已至,卻和暖如春按厘,著一層夾襖步出監(jiān)牢的瞬間医吊,已是汗流浹背钱慢。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工逮京, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束莫。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓懒棉,卻偏偏與公主長得像草描,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子策严,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 本文經(jīng)過大量細致的優(yōu)化后穗慕,收錄于我的新書《編程之法》第六章中,新書...
    Helen_Cat閱讀 7,421評論 1 39
  • 概述 排序有內(nèi)部排序和外部排序妻导,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序逛绵,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,184評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序倔韭,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序术浪,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,732評論 0 15
  • 郭老師寿酌、各位家長: 大家好胰苏!我是何依霖的家長,我叫何艷昭醇疼。首先感謝郭老師給我這個機會硕并,讓我在這里和大家共同探討孩子...
    踏雪無痕_何閱讀 434評論 2 2
  • define a function scrabble_score that take a string word...
    吳黃龍本人閱讀 428評論 0 0