我试图在没有函数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个短暂,也许它正在跳过最后一次迭代或第一次)
答案 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++
}