gpt4 book ai didi

C#,一维环绕数组

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:38 25 4
gpt4 key购买 nike

我有一个一维数组,我需要根据每个单元格的相邻单元格对其运行操作。

例如:

要在第一个单元格上运行操作,我需要访问最后一个单元格和第二个单元格。

第二个单元格,我需要访问第一个单元格和第三个单元格。

最后一个单元格,我需要访问第一个单元格和最后一个单元格之前的单元格。

到目前为止我的代码是:

public static int[] firstRule(int[] numberArray)
{
for (int i = 0; i < numberArray.Length; i++)
{
if (numberArray[numberArray.Length - 1 - i] == numberArray[i] + 1
&& numberArray[i + 1] == numberArray[i] + 1)
{
numberArray[i] = numberArray[i] - 1;
}
}
return numberArray;
}

但我的方法的问题是它只适用于第一个单元格,因为它会正确地使用最后一个单元格和第二个单元格,但在那之后,一切都会分崩离析。我不喜欢在没有大量代码的情况下发帖,但我不知道如何跟进。

我正在努力实现以下目标:

这些值是从0到3的数字。如果前面和后面的单元格都是相同的数字,我想把它改成x + 1
例如:假设我有 1 0 1 2 2。我想将 0 更改为 1。因为相邻单元格都是 0。

最佳答案

保持简单并使用变量来计算左右单元格索引。在你的 for 循环中你可以这样做......

var leftCell = i - 1;
if (leftCell < 0)
{
leftCell = numberArray.Length - 1; // Wrap around to the end...
}

var rightCell = i + 1;
if (rightCell > numberArray.Length - 1)
{
rightCell = 0; // Wrap back around to the beginning...
}


// Now you can update your original code to use these computed indices...
if (numberArray[leftCell] == numberArray[i] + 1
&& numberArray[rightCell] == numberArray[i] + 1)
{
numberArray[i] = numberArray[i] - 1;
}

关于C#,一维环绕数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32616918/

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