Кухня(); Второй сезон - 71/79


Всем привет! А вот и кухня!

Во втором сезон, в отличии от первого, задач будет на порядок меньше. Несмотря на это, сезон будет не менее интересным! Превью как бы намекает что речь пойдет о сортировке. Если вы еще не слышали про кухню — это не беда. Гляньте первый урок и все поймете. Там вы ознакомитесь и с правилами.

С нетерпением жду ваших изящных решений! И да будут они читабельны! Have fun! :)


71. Заданы два одномерных массива с различным количеством элементов и натуральное число k. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элементами первого, не используя дополнительный массив.

4 комментария

Airon
Ну а решение(не используя дополнительный массив) в Java есть?
terranum
Ну один вроде можно создать… Иначе как?!
Sdu
  • Sdu
  • 0
Ну если один можно, то решение «в лоб» совсем незамысловатое ))) как-то так:
public class Main {

    public static void main(String[] args) {
	// write your code here
        int[] a = new int[]{1, 2, 3, 4, 5, 6};
        int[] b = new int[]{7, 8, 9, 0};
        int[] c = concat(a, b, 2);
        for (int i : c) {
            System.out.print(i + " ");
        }
    }

    private static int[] concat(int[] a, int[] b, int i) {
        int aLen = a.length;
        int bLen = b.length;
        int[] c = new int[aLen + bLen];
        System.arraycopy(a, 0, c, 0, aLen);
        System.arraycopy(b, 0, c, aLen, bLen);
        int shift;
        for (int index = 0; index < bLen; index++) {
            shift = index + i;
            int tmp = c[shift];
            c[shift] = c[shift+bLen];
            c[shift + bLen] = tmp;
        }
        return c;
    }
}


Результат:
"C:\Program Files\Java\jdk1.8.0_11\bin\java"
1 2 7 8 9 0 3 4 5 6 
Process finished with exit code 0
zloj08
еще один
int k=3;
        int count = 0;
        int[] a = new int[]{1, 2, 3, 4, 5, 6};
        int[] b = new int[]{7, 8, 9, 0};

        int[] sum = new int[(a.length+b.length)];
        for (int i = 0; i < sum.length; i++) {
            if ((k) > i){
                sum[i] = a[i];
            }else if (count < k) {
                sum[i] = b[count];
                count++;
            }else
                sum[i] = a[i - k - 1];
        }
        for (int x : sum){
            System.out.print(x+"|");
        }
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.