function diskStacking(disks){
disks.sort((a,b) => a[2] - b[2])
let maxHeight = disks.map((arr) => arr[2])
let seq = disks.map((arr) => null)
for(let i = 1; i < disks.length; i++){
for(let j = 0; j < i; j++){
let currDisk = disks[i]
let prevDisk = disks[j]
if(isValidDisks(prevDisk,currDisk)){
if(maxHeight[j] + currDisk[2] > maxHeight[i]){
seq[i] = j
maxHeight[i] = maxHeight[j] + currDisk[2]
}
}
}
}
let maxHeightIdx = maxHeight.indexOf(Math.max(...maxHeight))
let maxStackDisks = getMaxStackDisks(maxHeightIdx, disks,seq)
return maxStackDisks
}
function isValidDisks(prevDisk, currDisk){
return prevDisk[0] < currDisk[0] && prevDisk[1] < currDisk[1] && prevDisk[2] < currDisk[2]
}
function getMaxStackDisks(idx, disks,seq){
let result = []
while(idx !== null){
result.unshift(disks[idx].concat())
idx = seq[idx]
}
return result
}
main(disks)
disks.sort((a, b) => a[2] - b[2])
let maxHeight = disks.map((arr) => arr[2])
let seq = disks.map((arr) => null)
for(let i = 1; i < disks.length; i++){
let currDisk = disks[i]
for(let j = 0; j < i; j++){
let prevDisk = disks[j]
if(isVaildDisk(currDisk,prevDisk)){ // Helper Method
if(maxHeight[j] + currDisk[2] > maxHeight[i]){
seq[i] = j
maxHeight[i] = maxHeight[j] + currDisk[2]
}
}
}
}
let maxHeightIdx = maxHeight.indexOf(Math.max(...maxHeight))
let maxStackDisks = getMaxStackDisks(maxHeight, disks) // Helper
return maxStackDisks
Please help, I have no knowledge of Javascript and want to understand the logic used in this piece of code.