gpt4 book ai didi

c - 从数组列表中删除重复项

转载 作者:行者123 更新时间:2023-11-30 18:35:10 25 4
gpt4 key购买 nike

我正在尝试从 ArrayList 中删除重复项。每个元素重复不超过 5 次。为什么每次都会留下 2 个重复项? (0,0,1,2,2,3,3,4,4,5)。

void quitarRepetidos_lista(ArrayList* lista)
{
eNumero* auxNumero;
eNumero* auxNumero2;
int i,j;

if ( lista != NULL )
{
for (i = 0; i<lista->len(lista); i++)
{
auxNumero = lista->get(lista,i);
for ( j = i+1; j<lista->len(lista); j++ )
{
auxNumero2 = lista->get(lista,j);
if ( numero_compare(auxNumero,auxNumero2) == 0)
{
lista->remove(lista,j);
}
}
}
}
}
int numero_compare(eNumero* numeroAlfa, eNumero* numeroBeta)
{
if ( ((eNumero*)numeroAlfa)->numero >((eNumero*)numeroBeta)->numero )
{
return 1;
}
if ( ((eNumero*)numeroAlfa)->numero < ((eNumero*)numeroBeta)->numero )
{
return -1;
}
return 0;
}

应该是 012345

最佳答案

从列表中删除元素后,不应增加 j,否则最终会跳过下一个元素(该元素采用刚刚删除的元素的索引) .

而不是:

if ( numero_compare(auxNumero,auxNumero2) == 0)
{
lista->remove(lista,j);
}

仅当删除元素时才应递减 j:

if ( numero_compare(auxNumero,auxNumero2) == 0)
{
lista->remove(lista,j--);
}

关于c - 从数组列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com