尋找陣列中不相同元素的個數

2021-07-11 08:12:27 字數 1031 閱讀 3700

題意:乙個整數陣列,計算該陣列中不相同整數的個數。

如a=則輸出不相同的個數為7.

方法一是使用hash陣列,將hash陣列裡面的數全部制為0;然後hash[a[i]]為0時,將其設定為1;最後hash陣列的和就是不同數字的數目。

此種方法的缺點就是只能適合整形陣列,其他陣列不適合;但是優點就是時間複雜度小,只有o(n)。

方法二:先進行從小到大排序,然後逐個比較相互之間是否相等;缺點是時間複雜度o(n*n);優點是不近能計算整數陣列對於浮點數以及字元陣列也適用;

**如下:

#include using namespace std;

int method1(int a,int length)

}if(flag) //說明排序已經結束

在上述**中,method1,method2分別對應的是方法1和方法2,method3是陣列為字串的情況。

遇到的問題:

對於形參為陣列明的時候,若陣列不是字串,則不能在所在函式中通過形參的函式名求得陣列的長度:

length=sizeof(a)/sizeof(int);

在method1中,通過上述**求得的length為1,並不是陣列正在的長度。因此當陣列為非字串時,最好連帶陣列長度一起傳遞給函式。

其他:對於氣泡排序來說,可以在一層迴圈內,二層迴圈外設定標記blog;當blog值不改變時,這認為二層迴圈的if語句沒有執行,這說明陣列已經有序,即可跳出迴圈:

for(i=length-1;i>0;--i)

}if(flag) //說明排序已經結束

break;

}

2016.04.20

字尾陣列 不相同的字串個數

spoj改版後好囧 不相同的子串的個數 spoj694,spoj705 給定乙個字串,求不相同的子串的個數。演算法分析 每個子串一定是某個字尾的字首,那麼原問題等價於求所有字尾之間的不相 同的字首的個數。如果所有的字尾按照 suffix sa 1 suffix sa 2 suffix sa 3 su...

1166不相同的子串的個數 字尾陣列

題目描述 給定乙個字串,求不相同的子串的個數。輸入 輸入資料第一行為乙個數字 t,表示資料組數。t 10 接下來的 t 行,每行乙個由小寫或大寫字母構成的字串,字串長度不超過 50000。輸出 對於每組資料,輸出一行乙個數字,表示答案。樣例輸入 4 abbabba dabddkababa bacab...

生日不相同的概率

假設我們班有 50名同學,每個同學都報出自己的生日 每個同學的生日都不相重的概率只有 0.0296 如果有 100個同學,不相重的概率為 3.0725 10 7 相重複的概率如此之大與我們主觀想象不同。編寫程式,輸入同學的人數 n,計算出其生日不重複的概率。然後在用 的方法 利用隨機數產生每個同學的...