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

时间:2015-10-09 19:55:22

标签: c# arrays

我想从数组中删除连续重复的数字,如果在该数组中连续重复出现的同一个整数的2个或更多个实例的序列,则应删除该序列(参见下面的示例)。 int [] array = {3,1,1,2,1,4,4,4}; 删除连续重复的数字后 (如1,1和4,4,4)=> {3,2,1} 因此我想将连续数字移动到结束并想使用Array.Resize()函数来调整数组大小。 我不想要完整的代码,方法也没问题。  static void RemoveRepeated(ref int [] array)     {         int count = 0;布尔旗;         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;                         如果(旗帜)                         {                             计数++;                             flag = false;                         }                 }             }         }         Array.Resize(ref array,array.Length-count);     }

2 个答案:

答案 0 :(得分:1)

以下是如何有效地做到这一点。我认为代码是自我解释的。

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);
}

答案 1 :(得分:0)

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