function orderNum(arr, num) { let i = arr.length - 2; let temp; if (arr[i] < num) { return arr; } while (arr[i] > num) { temp = arr[i]; arr[i] = num; arr[i + 1] = temp; // if (arr[i] === num) { // arr.splice(arr[i], 1); // break; // } i -= 1; } return arr; } function dblLinear(n) { let result = [1]; for (let i = 0; i <= n; i++) { const x = result[i]; const y = 2 * x + 1; const z = 3 * x + 1; if (result[result.length - 1] !== y) { result.push(y); result = orderNum(result, y); } if (result[result.length - 1] !== z) { result.push(z); result = orderNum(result, z); } } result = result.filter((num, pos) => result.indexOf(num) === pos); return result[n]; }