const nextBigger = arr => {
const num = arr.join('');
const max = arr.sort((a, b) => b - a).join('');
const tpl = ''.padStart(arr.length, '-')
const check = str => {
arr.forEach(v => str = str.replace(v, '-'))
return str === tpl
}
if (max === num) return -1;
let n = +num;
while (true) {
n += 9
if (check(n.toString())) return n
}
}
это решение основано на приведенной задаче в качестве примера
здесь результатом является строка
результатом [21, 1, 2, 12, 11] ->21122111 может быть несколько
[21, 12, 2, 1, 11], [21, 12, 2, 11, 1] ...
нужно преобразовать строку результата в массив, сами напишите