从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);
}
如何有效地做到这一点。我认为代码是不言自明的。
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);
}
可以一个一个地将它们压入堆栈,除非数组中的下一个元素等于堆栈中的最后一个元素。