Вы можете использовать zip
следующим образом:
val array1 = listOf(1, 2, 3)
val array2 = listOf(1, 2, 1)
val out1 = array1.zip(array2, Int::minus)
println(out1) // [0, 0, 2]
Это дает вам новый массив со значениями разностей.
Отсюда всего несколько шагов до (необычного) формата, который вы запрашиваете, используя mapIndexedNotNull
:
val out2 = out1.mapIndexedNotNull{ i, v -> if (v != 0) listOf(i, v) else null }
println(out2) // [[2, 2]]