此代码如何对输入起作用:20051996
程序:删除数组中的重复元素
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if (a[i]==a[j])
{
for(k=j;k<n;k++)
{
a[k]=a[k+1];
}
n--;
j--;
}
}
}
最佳答案
逻辑很简单,此处元素未删除但正在交换。
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if (a[i]==a[j])
这是为了找到等于
a [i]
的元素。当我们得到数字时,有另一个循环针对重复的数字,然后该单元格被下一个单元格值填充/替换。由于一个值已更改,因此所有剩余的单元格值都将与下一个交换。for(k=j;k<n;k++)
{
a[k]=a[k+1];
}
n--;
j--;
现在,最后一个单元格仍然保留,并且n和j的数量减少,因此不再引用该单元格。它删除了多余的元素,但又创建了一个新元素,您必须放置一个计数器以获取重复次数,然后必须对数组进行切片或破坏数组以使其正常工作。
关于c - 无法获得此代码的逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45778902/