tgoop.com/csharpproglib/6547
Create:
Last Update:
Last Update:
Дан массив длиной 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
