Вращение (прокручивание) массива K раз, Rotate Array K times C#
Пример прокручивания/вращения массива Array K раз на C#
public static void Rotate(int[] nums, int k) {
int len = nums.Length;
int cnt = k%len;
if ((len<2)||(cnt==0)){return;}
int x = 0;
int val = nums[x];
int val_prev = nums[x];
int x_start = x;
for (int i = 0; i<len;i++)
{
x = x+cnt<len?x+cnt:(x+cnt)%len;
val_prev = nums[x];
nums[x] = val;
if (x_start == x)
{
x++;
val = nums[x];
x_start = x;
}
else
{
val = val_prev;
}
}
}
Смысл на примере:
Есть массив: [1,2,3,4,5]
Проворачиваем его 3 раза: K=3.
Результат:
[3,4,5,1,2]