我有一個大小爲N的雙數組,其中元素由代碼計算。而且看起來是這樣的:如何計算一維數組中重複元素的數量?
A,B,A,A,B,C,...
所以它有重複的元素。例如,一個重複10次,B重複12次等等
我想輸出是這樣的:
一:10
B:12
這將是一個很好的算法來做到這一點?
我有一個大小爲N的雙數組,其中元素由代碼計算。而且看起來是這樣的:如何計算一維數組中重複元素的數量?
A,B,A,A,B,C,...
所以它有重複的元素。例如,一個重複10次,B重複12次等等
我想輸出是這樣的:
一:10
B:12
這將是一個很好的算法來做到這一點?
如果元素是浮點數,則兩個值爲的概率完全相等非常低(由於浮點數的表示方式)。
您可能需要計算兩個數字之間的絕對差值,並與1.0E-5等一些ε值進行比較。如果差值小於ε,則認爲值相等。
一種算法是對數組進行排序。只要連續值「相等」,就增加計數器。
謝謝!很好的方法來解決使用字符和地圖。 – Alireza
char y[] = { 'a', 'b', 'a', 'c' };
int count[52] = {0};
for (int i = 0; i < (sizeof(x)/sizeof(char)); i++)
{
if (y[i] >= 65 && y[i] <= 90)
count[y[i] - 'A']++;
else if (y[i] >= 97 && y[i] <= 122)
count[(y[i] - 'a') + 26]++;
}
for (int i = 0; i < 52; i++)
{
if (i < 26 && count[i] > 0)
cout << char('A' + i) << ": " << count[i] << endl;
else if (i >= 26 && count[i] > 0)
cout << char('a' + i - 26) << ": " << count[i] << endl;
}
加一個用於提及一般用途的不同方法。我會試試這個。 – Alireza
你嘗試過什麼嗎? –
你允許排序數組嗎? –
請參閱'std :: map',將數組中的值用作映射中的鍵,映射值將是count,如'std :: map'中的計數。 –