JSFiddle - React, Tailwind, and code Playground

by TheDiamondDoge

JavaScript

/* function nextSmaller(n) {
  if (n.toString().length === 1) return -1;
  
  let nArrReversed = n.toString().split('').reverse();
  for (let i = 0; i < nArrReversed.length - 1; i++) {
    for (let j = i + 1; j < nArrReversed.length; j++) {
      if (nArrReversed[i] < nArrReversed[j]) {
        nArrReversed.splice(j + 1, 0, nArrReversed[i]);
        nArrReversed.splice(i, 1);
        nArrReversed.reverse();
        return nArrReversed[0] == 0 ? -1 : Number(nArrReversed.reverse().join(""));
      }
    }
  }
  return -1;
} */

function nextSmaller(n) {
  if (n.toString().length === 1) return -1;
  
  let nArr = n.toString().split('');
  let candidates = [];
  for (let i = 0; i < nArr.length - 1; i++) {
    for (let j = i + 1; j < nArr.length; j++) {
      if (nArr[i] > nArr[j]) {
        nArr.splice(j + 1, 0, nArr[i]);
        nArr.splice(i, 1);
        
        if (nArr[0] != 0) candidates.push(Number(nArr.join("")));
      }
    }
  }
  
  if (!candidates.length) return -1;
  candidates.sort((a, b) => b - a);
  return candidates[0];
}

console.log(nextSmaller(172));