如何移动一个数组元素回绕?
|
我正在尝试编写一个遍历数组的函数,当它找到某种类型的值时,会将其向右移动定义的位数。
我知道如何通过临时存储值,将右侧元素向左移动,然后将临时值写入正确的位置来移动元素。
我苦苦挣扎的是,如果某个字符出现在数组的结尾附近,我需要它环绕并从数组的开头继续,所以是圆形的。
因此,将数组移动,例如,大写字母向右移3个位置,特殊字符向左移1个位置:
{ M, y, N, a, m, e, P} becomes...
{ y, M, P, a, N, m, e}
要将右边的8个元素右移3个位置,但这仅在8个元素早于数组末尾的3个元素出现且不会环绕的情况下有效。
输入数组:
{0, 1, 2, 3, 4, 5, 6, 7, **8**, 9}
所需的输出:
{0, **8**, 1, 2, 3, 4, 5, 6, 7, 9}
int[] array = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = array.Length - 1; i >= 0; i--)
{
if (array[i] == 8)
{
int temp = array[i];
int j = 0;
for (j = i; j < i + 3; j++)
{
array[j] = array[j + 1];
}
array[j] = temp;
}
}
没有找到相关结果
已邀请:
2 个回复
响摔衅幸
的元素,而是写索引
的元素。因此:
我排除了错误检查。
痴浪墨