JSFiddle - React, Tailwind, and code Playground
JavaScript
var s = [2, 4, 3, 5, 1, 7, 6, 9, 8];
var lengths = {
0: 0
};
var predecessor = {};
for(var i = 0; i < s.length; i++) {
var max = -1;
//examine all numbers to the left of s[i]
for(var j = (i - 1); j >= 0; j--) {
//Find the biggest number that is lesser than s[i]
if(s[j] < s[i]) {
if(s[j] > max) {
max = s[j];
idx = j;
predecessor[i] = j;
lengths[i] = lengths[j] + 1;
}
}
}
}
console.log("Lengths: [" + explode(lengths) + "]");
console.log("Predecessors: [" + explode(predecessor) + "]");
function explode(obj) {
var str = "";
for(var key in obj) {
str += obj[key] + ", ";
}
return str.replace(/, $/, "");
}