2013-10-02 38 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++      
    }