Как объединить несколько массивов с одним и тем же первым или последним элементом в Android (java или kotlin)? - PullRequest
0 голосов
/ 01 мая 2020

Массивы могут быть обратными.

например:

Int[] a = {1,2,3,4,5};
Int[] b = {9,8,7,6,5};
Int[] c = {3,0,9};

Int[] output = {1,2,3,4,5,6,7,8,9,0,3};

Я могу использовать вложенный l oop для достижения этого. Но есть ли более простой алгоритм?

Ответы [ 3 ]

0 голосов
/ 01 мая 2020

В kotlin вы можете достичь этого следующим образом:

val a = arrayOf(1,2,3,4,5)
val b = arrayOf(9,8,7,6,5)
val c = arrayOf(3,0,9)

val combined = ((a + b.reversed()).distinct()) + ((b + c.reversed()).distinct() - b)
0 голосов
/ 01 мая 2020

Не уверен, что понял ваши требования, но вот мои предположения:

  • вы можете объединить два массива, если последний элемент первого массива совпадает с первым элементом второго массив или последний элемент второго массива - в последнем случае вам также необходимо обратить вспять второй массив;
  • при объединении двух массивов первый элемент второго массива должен быть пропущен (после обращения массива к другому , если необходимо в соответствии с предыдущим пунктом)
  • если два массива не могут быть объединены, возвращается пустой массив

В соответствии с этими предположениями, возможная реализация:

fun combineArrays(a: IntArray, b: IntArray): IntArray =
        when {
            a.last() == b.first() -> a + b.takeLast(b.size - 1)
            a.last() == b.last() -> a + b.reversed().takeLast(b.size - 1)
            else -> intArrayOf()
        }

val a = intArrayOf(1, 2, 3, 4, 5)
val b = intArrayOf(9, 8, 7, 6, 5)
val c = intArrayOf(3, 0, 9)

val result = combineArrays(combineArrays(a, b), c)
println(result.joinToString())

Это печатает 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3.

0 голосов
/ 01 мая 2020

В java я пробовал с

int[] array1and2 = new int[array1.length + array2.length];
System.arraycopy(array1, 0, array1and2, 0, array1.length);
System.arraycopy(array2, 0, array1and2, array1.length, array2.length);

Следуйте этому Ссылка . Это может помочь вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...