int main(array<System::String ^> ^args)
{
int arr[]={1,2,3,2,9,8,1,2,3,9};
int a[9];
int size = sizeof(arr)/sizeof(arr[0]);
int str[256]= {'\0'};
int i = 0;
for(i ; i < size ; i++)
{
if(str[arr[i]] == 0 )
str[arr[i]]= 1;
}
for( i = 0 ; i < size ; i++)
{
if( str[arr[i]] == 1)
{
a[i] = arr[i];
}
}
for(i=0 ; i < size ; i++)
{
printf("%d->",a[i]);
}
return 0;
}
仍在新数组 a 中,我正在获取旧数据...不确定这里缺少什么...
任何帮助将不胜感激。
提前致谢。
最佳答案
逻辑错误
- 最终的数组不会到达
大小
a
的索引错误
只需使用一个循环即可实现这一点,分析如下:
int i = 0,j=0;
for( ; i < size ; i++)
{
if(str[arr[i]] == 0 )
{
str[arr[i]]= 1;
a[j++] = arr[i];
}
}
现在在最终数组 a
上迭代直到 j
关于c - 使用 hashmap 从数组中删除重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578969/