我确信我找到的是一个词,但是因为我不知道它我找不到我的问题的答案,我所拥有的是一个双锯齿状的数组,我想要的价值在索引0处为索引1的值相同,索引1直到数组结束时为2,最后一个索引为pish到索引0
示例:
的原始 的
private double[][] array = { {1, 2, 3, 4}, {5, 6, 7, 8}, ...}
成为(修改后) 我知道我似乎正在重新声明阵列不是重点,它只是告诉你它应该是什么。
private double[][] array = { {4, 1, 2, 3}, {8, 5, 6, 7}, ...}
修改 的
如果您对我正在寻找的内容有所了解,您是否可以在评论中这样说,我会删除该问题并进一步深入研究
答案 0 :(得分:3)
这通常称为旋转。你可以实现for
- 循环,但请注意,由于你向右旋转,从后到前更容易按照你的方式工作,如下所示:
for(var i = 0; i < array.Length; i++)
{
var len = array[i].Length;
if (len > 1) {
var last = array[i][len - 1];
for(var j = len - 1; j > 0; j--)
{
array[i][j] = array[i][j - 1];
}
array[i][0] = last;
}
}
答案 1 :(得分:1)
您可以轻松使用List
Queue
而不是锯齿状数组。下面是一个如何看待锯齿状阵列以及如何移动元素的示例:
var queues = new List<Queue<double>>();
//first queue (1,2,3,4)
var queue = new Queue<double>();
queue.Enqueue(4);
queue.Enqueue(3);
queue.Enqueue(2);
queue.Enqueue(1);
queues.Add(queue);
//second queue (5,6,7,8)
var queue2 = new Queue<double>();
queue.Enqueue(8);
queue.Enqueue(7);
queue.Enqueue(6);
queue.Enqueue(5);
queues.Add(queue2);
//an example of how to "rotate"
var lastItem = queues[0].Dequeue(); // (1,2,3)
queues[0].Enqueue(lastItem); // (4,1,2,3)