找到陣列裡重複的數字

2021-08-03 03:30:33 字數 1244 閱讀 3103

題目一:

在乙個長度為n的陣列裡的所有元素數字都在0-n-1的範圍內。

陣列中的某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。

請找出元素任意乙個重複的數字。

例如:

如果輸入長度為7的陣列,那麼輸出是重複的數字是2或者3

演算法描述:

1.排除不符合要求的陣列,元素值。

2.正式排除重複元素

從第乙個元素開始判斷元素值與下標的關係,

1)元素值與下標相等,判斷第二個元素值與下標的關係。還相等就繼續判斷知道最後乙個,如果都相等,說明元素沒有重複值

2)元素下標不相等,該元素的值作為下標,跳轉到對應元素,判斷元素的值與下標是否相等

1)相等,該元素就是陣列中的乙個重複元素,不在執行函式,return該元素值

2)不相等,則將該元素與原來的那個元素進行交換,使得元素與下標對應相等

#include

#include

#include

//陣列重複值查詢元素函式

int find_same_num(int a, int n)

for (i = 0; i < n; i++)

}//初始化i

i = 0;

while (i < n)

else

if (a[i] == a[a[i]])//元素有重複值,返回重複的元素。

else

//元素和下標不相等,將元素移動至下標相等的位置,swap(a[i]<=>a[a[i]])

/*【注意】

交換a[i]與a[a[i]]元素

常用方法不再適用

因為交換a[i]元素後,a[a[i]]的下標也隨之改變

*/}//如果迴圈執行完了,說明元素沒有重複值,返回-1

return -1;

}//隨機數生成函式

void random_number_generation(int a, int n)

for (int i = 0; i/*while (!a[i])

*/a[i] = rand() % 10;

}}int main(void)

printf("\n");

tag = find_same_num(a,10);

if (tag == -1)

else

system("pause");

return

0;}

陣列 請在給出的整數陣列中找到重複的數字

題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 我們注意到,陣列中的數字都在0到n 1範圍內。如果這個陣...

找到陣列中消失的數字

問 給定乙個範圍在 1 a i n n 陣列大小 的 整型陣列,陣列中的元素一些出現了兩次,另一些只出現一次。找到所有在 1,n 範圍之間沒有出現在陣列中的數字。您能在不使用額外空間且時間複雜度為o n 的情況下完成這個任務嗎?你可以假定返回的陣列不算在額外空間內。注 這裡的n指的是陣列的大小,不是...

陣列 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...