public class Solution {
public static int[][] result = new int[2][];
public static int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11};
public static void main(String[] args) {
if (array.length % 2 != 0) {
int[] numberOneArray = Arrays.copyOfRange(array, 0, array.length / 2 + 1);
int[] numberTwoArray = Arrays.copyOfRange(array, array.length / 2 + 1, array.length);
Arrays.fill(result, 0, result.length / 2 + 1, numberOneArray);
Arrays.fill(result, result.length / 2, result.length, numberTwoArray);
} else {
int[] numberOneArray = Arrays.copyOfRange(array, 0, array.length / 2);
int[] numberTwoArray = Arrays.copyOfRange(array, array.length / 2, array.length);
Arrays.fill(result, 0, result.length / 2, numberOneArray);
Arrays.fill(result, result.length / 2, result.length, numberTwoArray);
}
System.out.println(Arrays.deepToString(result));
}
}
Semyon Baryshnikov
30 уровень
Насколько я усложнил задачу?
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
10 августа 2023, 08:17
Еще бы ты условие задачи приложил - вообще молодец был бы. Но если задача побить массив на два и в первый подмассив класть большее количество элементов если в изначальном их нечётное количество то задача делается сильно проще. Ведь операция наполнения одинаковая в обоих случаях, отличается только индекс середины и начала соответственно.
+3
Semyon Baryshnikov QA Automation Engineer
10 августа 2023, 08:26
Понял, большое спасибо!
0
Денис Enterprise Java Developer
10 августа 2023, 08:27
На всякий случай уточню, ты понял как я посчитал середину?
0
Semyon Baryshnikov QA Automation Engineer
10 августа 2023, 08:44
Честно сказать, нет.
0
Денис Enterprise Java Developer
10 августа 2023, 08:47
Это простенький фокус с приведением типов. У Int нет дробной части. Если ты 3 поделишь пополам, то должен получить 1.5, при приведении к int это будет 1. Для твоей задачи это не подходит, но ты ведь можешь сделать (3 + 1) / 2 и получить 2.
В случае с чётной длинной тоже не будет искажений, потому как 4 / 2 = 2 и 5 / 2 = 2 из-за отбрасывания дробной части.
+1
Semyon Baryshnikov QA Automation Engineer
10 августа 2023, 08:51
Почему то в голове про это подумал, но не стал писать.
0