我尝试编程一个测试,其中我有两个参数,一个称为项目的int列表和一个称为loces的单个int,我将在其中旋转列表通过指定的位置数量。
这是我到目前为止尝试的。
public void Test8(List<int> items, int places)
{
int a = 0;
if (a < items.Count)
{
a = a % items.Count;
}
int[] result = new int[items.Count];
for (int i = 0; i < a; i++)
{
result[i] = items[items.Count - a + i];
}
int j = 0;
for (int i = a; i < items.Count; i++)
{
result[i] = items[j];
j++;
}
您可以使用linq做到这一点:
IEnumerable<T> RotateLeft<T>(IEnumerable<T> list, int places)
{
return list.Skip(places).Concat(list.Take(places));
}
IEnumerable<T> RotateRight<T>(IEnumerable<T> list, int places)
{
return RotateLeft(list, list.Count() - places);
}