題目一:
在乙個長度為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 ...