繁体   English   中英

用一个单元格替换阵列中的两个连续单元格

[英]Replacing two consecutive cell in an array with one cell

我只是问是否有一种简单的方法可以做到这一点。 即用一个具有不同值的单元格替换两个连续的单元格。

例如:-如果我的数组= [0,3,1,2,3,4],并且我想将索引0和1替换为值5,就变得像此数组= [5,1,2,3 ,4]

你们可以建议一些简单的方法来做到这一点。 我执行此代码,但是出了点问题:

    int J = 0;
            if (max != 1)
            {
                for (int iii = 0; iii < output.Length -1; iii++)
                    {
                        if ((output[iii] == imax) && (output[iii + 1] == jmax))
                        {
                            temp = temp + 1;
                            output[J] = Convert.ToByte(temp);
                            J = J + 1;
                            iii = iii + 1;
                        }
                        else
                        {
                            output[J] = output[iii];
                            J = J + 1;
                            output[J] = output[iii + 1];
                        }

                    }
            }

因为当我想检查2个连续索引时,我想将它们传递给花药2索引

int[] array = new int[] { 0, 3, 1, 2, 3, 4 };
List<int> list = array.ToList();
list.RemoveRange(0,2);
list.Insert(0, 5);
array = list.ToArray();

另一个变体

int[] array = new int[] { 0, 3, 1, 2, 3, 4 };
Array.Reverse(array);
Array.Resize(ref array, 5);
Array.Reverse(array);
array[0] = 5;
do
        {
            RNG_NXT =RNG +1;   
        for (int iii = 0; iii <Nold -1; iii++)
                    {
                        if ((output[iii] == imax) && (output[iii + 1] == jmax))
                        {
                            output[J] = Convert.ToByte(RNG_NXT);
                            J = J + 1;
                            iii = iii + 1;
                        }
                        else
                        {
                            output[J] = output[iii];
                            J = J + 1;
                        }
                   }
            RNG++;            
        }
while( RNG < RNG_MAX) ;

如果您关心性能,则希望做很少会影响性能的操作。 尝试以下扩展方法:

public static int[] ReplaceConsecutiveCells(this int[] array, int startIndex, int replaceWith)
{
    int[] targetArray = new int[array.Length - 1];

    for (int i = 0; i < array.Length; i++)
    {
        if (i < startIndex)
        {
            targetArray[i] = array[i];
        }
        else if (i == startIndex)
        {
            targetArray[i] = replaceWith;
        }
        else if (i == startIndex + 1)
        {
            // no action
        }
        else
        {
            targetArray[i - 1] = array[i];
        }
    }

    return targetArray;
}

像这样使用它:

array = array.ReplaceConsecutiveCells(0, 5);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM