面試題3(一) 找出陣列重複的數字

2021-09-08 07:57:12 字數 694 閱讀 7208

// 面試題3(一):找出陣列中重複的數字

// 題目:在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,

// 也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,

// 那麼對應的輸出是重複的數字2或者3。

從頭到尾掃瞄陣列,當掃瞄到下標為i的數字a[i]=m,

如果i=m,那麼m就在他自己的位置上,繼續下乙個。

如果i!=m,說明m不在自己的位置a[m]上,

再比較a[m]和m,如果a[m]=m,說明m在下標為i和m的地方都出現了,找到乙個重複數字,返回。

如果a[m]!=m,說明m暫時只出現了一次,交換a[i]和a[m],把m放到自己的位置上。

不斷重複這個過程,就可以找到乙個重複的數字。

if (陣列元素與長度引數不合規範)

for (遍歷陣列每乙個元素)

交換a[i] 和a[a[i]];    

}   

}

bool duplication(int* numbers,int length,int* duplication)

//陣列元素不合要求

for(int i=0;ilength-1)

}//輸入合法,開始尋找

for(int i=0;i參照參考資料

面試題3(一) 找出陣列重複的數字

面試題3 一 找出陣列中重複的數字 題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。從頭到尾掃瞄陣列,當掃瞄到...

面試題3(二) 不修改陣列找出重複的數字

面試題3 二 不修改陣列找出重複的數字 題目 在乙個長度為n 1的陣列裡的所有數字都在1到n的範圍內,所以陣列中至 少有乙個數字是重複的。請找出陣列中任意乙個重複的數字,但不能修改輸入的 陣列。例如,如果輸入長度為8的陣列,那麼對應的 輸出是重複的數字2或者3。不能修改陣列,可以建立乙個長度為n 1...

面試題3 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。1.方法一 把輸入的資料進行排序,排序後再判斷有無重複的數字,時間複雜...