0

我试图在数组 num[] 中找到唯一值,没有函数,C++ 唯一值,因为具有 (3,5,3,4) 的数组只能找到 3 个唯一值,该数组与自身进行比较。大小是数组中的元素(上述数组的大小为 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,也许它正在跳过最后一次迭代或第一次)

4

3 回答 3

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++                     
     }
于 2013-10-02T01:42:25.330 回答
0

您正在尝试不使用函数,但您愿意使用数据结构吗?您可以使用哈希表。键是值,值是出现次数,然后您可以计算哈希数以找到唯一项的数量。

于 2013-10-02T01:30:44.437 回答
0

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

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

于 2013-10-02T01:27:37.497 回答