给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。要求在O(n)的时间复杂度,O(1)的空间复杂度要求下完成。
void fun(int a[], int n)
{
for (int i = 0; i < n; i++)
{
a[(a[i]%(n+1))-1] += (n+1);
}
for (int i = 0; i < n; i++)
{
cout << i+1 << ": " << a[i]/(n+1) << endl;
}
}