动态规划又来了,求最长公共子序列,不一定是连续的。
思路是:如果当前这个数加入之前求出的各子序列后还是递增,则求出这些递增序列中最大的。
function longest(arr){
var len = arr.length;
var theLong = new Array(len);
for(var i=0;i<len;i++){
theLong[i] = 1;
}
for(var j=1;j<len;j++){
for(var i=0;i<j;i++){
if(arr[i]<arr[j] && theLong[i]+1>theLong[j]){
theLong[j] = theLong[i]+1;
}
}
}
var max = theLong[0];
for(var k=1;k<len;k++){
if(theLong[k]>max){
max = theLong[k];
}
}
return max;
}
console.log(longest([5,6,7,1,2,3,8]));