我想遍历排序列表以获取不同数字的数量。迭代排序列表并计数不同的数字
请在下面找到我的尝试。列表的大小是k*k
。 当列表被排序时,我会比较连续的项目来识别重复项目。
int count_distinct(list<int> v)
{
int num = k*k;
std::list<int>::iterator it;
it = v.begin();
for (int a=0; a<k*k-1; a++)
{
if(*it == *it+1)
num--;
it++;
}
return num;
}
我不能改变的列表,所以std::list::unique()
是不是一种选择。制作一份清单或独特物品的副本太慢,对我来说很有用。
'K +'?你确定吗? – melpomene
'for(const auto num:v)'迭代列表。然后使用'std :: map'作为结果,并在'num'索引处计算'int'。 –
输入列表是否已排序? – melpomene