Longest increasing subsequence: Difference between revisions
Content added Content deleted
(→{{header|REXX}}: added the REXX computer programming language for this task.) |
|||
Line 1,047: | Line 1,047: | ||
=={{header|JavaScript}}== |
=={{header|JavaScript}}== |
||
⚫ | |||
{{libheader|Lo-Dash underscore library}} |
|||
⚫ | |||
⚫ | |||
} |
|||
var lisLenPerIndex = []; |
|||
⚫ | |||
let max = { index: 0, length: 1 }; |
|||
⚫ | |||
var _ = require('underscore'); |
|||
lisLenPerIndex[i] = 1; |
|||
function findIndex(input){ |
|||
⚫ | |||
⚫ | |||
⚫ | |||
var maxSeqEndingHere = _.range(len).map(function(){return 1;}); |
|||
var length = lisLenPerIndex[i] = lisLenPerIndex[j] + 1; |
|||
⚫ | |||
if (length > max.length) { |
|||
⚫ | |||
max = { index: i, length }; |
|||
⚫ | |||
} |
|||
maxSeqEndingHere[i] = maxSeqEndingHere[j]+1; |
|||
} |
|||
return maxSeqEndingHere; |
|||
} |
|||
} |
|||
} |
|||
var lis = [input[max.index]]; |
|||
function findSequence(input, result){ |
|||
⚫ | |||
var maxValue = Math.max.apply(null, result); |
|||
⚫ | |||
var maxIndex = result.indexOf(Math.max.apply(Math, result)); |
|||
⚫ | |||
var output = []; |
|||
max.length--; |
|||
output.push(input[maxIndex]); |
|||
} |
|||
⚫ | |||
} |
|||
if(maxValue==0)break; |
|||
⚫ | |||
return lis; |
|||
⚫ | |||
maxValue--; |
|||
} |
|||
} |
|||
output.reverse(); |
|||
⚫ | |||
} |
} |
||
⚫ | |||
console.log(getLongestIncreasingSubsequence([3, 2, 6, 4, 5, 1])); |
|||
⚫ | |||
var y = [3, 2, 6, 4, 5, 1]; |
|||
var result = findIndex(x); |
|||
var final = findSequence(x, result); |
|||
console.log(final); |
|||
var result1 = findIndex(y); |
|||
var final1 = findSequence(y, result1); |
|||
console.log(final1); |
|||
</lang> |
</lang> |
||