Учитывая массив чисел n
и число, d
, выполните левые вращения по массиву. Затем распечатайте обновленный массив как одну строку целых чисел, разделенных пробелами.Как эффективно вращать массив?
Пример ввода:
5 4
1 2 3 4 5
Образец Выход: 5 1 2 3 4
Первая строка содержит два целых числа через пробел, обозначающих соответствующие значения n
(количество целых чисел) и d
(количество левых поворотов, которое вы должны выполнить). Вторая строка содержит n
целые числа, разделенные пробелами, описывающие соответствующие элементы начального состояния массива.
static void Main(String[] args)
{
string[] arr_temp = Console.ReadLine().Split(' ');
int n = Int32.Parse(arr_temp[0]);
int d = Int32.Parse(arr_temp[1]);
string[] arr = Console.ReadLine().Split(' ');
string[] ans = new string[n];
for (int i = 0; i < n; ++i)
{
ans[(i + n - d) % n] = arr[i];
}
for (int j = 0; j < n; ++j)
{
Console.Write(ans[j] + " ");
}
}
Как использовать меньше памяти для решения этой проблемы?
'++ i' и' ++ j' –
@FirstStep post и pre increment действительно действительно имеют значение при назначении результата. – juharr
@juharr Я подумал: «_Висположил, что i ++ должен помнить старое значение i после инкремента, я думаю, что ++ может быть короче» От чтения комментариев в [** Пост-инкремент и предварительный инкремент в цикле «for» тот же выход **] (http://stackoverflow.com/questions/4706199/post-increment-and-pre-increment-within-a-for-loop-produce-same-output) –