Дан массив длиной
2n в виде [x1,x2,xn,y1,y2,yn] нужно вернуть массив [x1,y1,x2,y2,xn,yn], то есть перемешать.Идея решения
Логически делим массив на две половины по
n элементов и в одном цикле по индексу i собираем ответ в новый массив result.На каждой итерации кладем сначала элемент из первой половины
nums[i] потом из второй nums[i+n].Так мы проходим вход один раз время O(
n), где n это половина массива.Решение:
public class Solution
{
public int[] Shuffle(int[] nums, int n)
{
int[] result = new int[2 * n];
int index = 0;
for (int i = 0; i < n; i++)
{
result[index++] = nums[i];
result[index] = nums[i + n];
index++;
}
return result;
}
}
Ключевой момент в том что мы никогда не выходим за границы
первая половина идет по индексам от нуля до
n минус один вторая от n до 2n минус один, а индекс в result просто сдвигается на два шага за итерацию.🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥱3🥰1👏1