2013-10-02 39 views
0

我想查找數組num []中沒有函數的唯一值,C++ 具有(3,5,3,4)的數組中的唯一值只能找到3個唯一值,數組與自身進行比較。大小是數組中的元素(上述數組大小4)For statement找到唯一值

for (k=0; k<size; k++){ 
    for (i=k+1;num[k]!=num[i]&&i<size; i++) { // i = 1 don't want it to compare itself 
    if (i+1 == size) { 
       unique++; 
        } 
       } 
    } 

我不斷收到這取決於我做什麼1個或0唯一值的問題,在正確的方向有任何建議將是有益的。編輯:添加i = k + 1到第二個FOR(仍然獲得1短,但可能是跳過最後一個迭代或第一個)

回答

0

如果您使用強力方法,則需要比較元素與其他元素。仔細檢查你的代碼,看看它是否這樣做。

或者,對於更快的方法,請使用std::set - 向該集合中添加元素,並在最後找出該集合的大小。重複的元素會自動丟棄。

0

你正在嘗試它沒有功能,但你願意使用數據結構?你可以使用一個哈希表。鍵是值,值是出現次數,然後您可以計算散列數以查找唯一項的數量。

0

感謝大家的回答,我= k + 1(需要先前的循環),因爲最後一次迭代沒有什麼可比較的,你必須檢查並添加一個。

for (k=0; k<size; k++){ 
    for (i=k+1;num[k]!=num[i]; i++) { // i = 1 don't want it to compare itself 
    if (i+1 == size) 
       number++;   
       } 
       if(k+1==size) 
       number++      
    }