对于语句查找唯一值

时间:2013-10-02 01:23:11

标签: c++ for-loop

我试图在没有函数C ++的数组num []中找到唯一值 具有(3,5,3,4)的数组的唯一值只能找到3个唯一值,该数组与其自身进行比较。 Size是数组中的元素(上面数组的大小为4)

 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个短暂,也许它正在跳过最后一次迭代或第一次)

3 个答案:

答案 0 :(得分:0)

如果您正在使用强力方法,则需要将每个元素与每个其他元素进行比较。仔细检查您的代码,看看它是否正在这样做。

或者,对于更快的方法,使用std::set - 继续在集合中添加元素并最终找出集合的大小。重复的元素会被自动丢弃。

答案 1 :(得分:0)

你是在没有功能的情况下尝试它,但是你愿意使用数据结构吗?您可以使用哈希表。键是值,值是外观的数量,然后您可以计算哈希的数量以查找唯一项的数量。

答案 2 :(得分:0)

感谢大家的回答,i = 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++                     
     }