从int数组中移除连续的数字

本文关键字:连续 数字 int 数组 | 更新日期: 2023-09-27 18:17:03

我想从数组中删除连续重复的数字,如果在该数组中连续重复出现2个或多个相同整数的实例,则应该删除该序列(参见下面的示例)。

int[] array = {3, 1, 1, 2, 1, 4, 4, 4};

去除连续重复数字后

(like 1,1 and 4,4,4)=>{3,2,1}

因此我想把连续的数字移到末尾,并想使用Array.Resize()函数来调整数组的大小。我不想要完整的代码,接近就可以了。

 static void RemoveRepeated(ref int[] array)
    {
        int count = 0; bool flag;
        for (int i = 0; i < array.Length; i++)
        {
            flag = true;
            for (int j = i+1; j < array.Length-1; j++)
            {
                if (array[i] == array[j] )
                {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                        if (flag)
                        {
                            count++;
                            flag = false;
                        }
                }
            }
        }
        Array.Resize(ref array,array.Length-count);
    }

从int数组中移除连续的数字

如何有效地做到这一点。我认为代码是不言自明的。

static void RemoveRepeated(ref int[] array)
{
    int count = 0;
    for (int i = 0; i < array.Length; )
    {
        var current = array[i];
        int repeatCount = 1;
        while (++i < array.Length && array[i] == current)
            repeatCount++;
        if (repeatCount == 1)
            array[count++] = current;
    }
    Array.Resize(ref array, count);
}

可以一个一个地将它们压入堆栈,除非数组中的下一个元素等于堆栈中的最后一个元素。