递归法解决LIS问题,对源码的一个疑问
来源:9-8 LIS问题 Longest Increasing Subsequence
甲骨文_0001
2017-04-10
// var arr = [ 4, 10, 4, 3, 8, 9 ];
var arr = [ 10, 9, 2, 5, 3, 7, 101, 18 ];
// 为了求得数组的LIS,我认为只要直接调用 getMaxLength(arr, arr.length-1)就行了
alert( getMaxLength( arr, arr.length - 1 ) );
/** 看了老师的源代码,
int res = 1;
for( int i = 0 ; i < nums.size() ; i ++ )
res = max(res, getMaxLength(nums, i));
=====================================
我认为这个循环就是一个健壮性,但不需要这个循环,直接 getMaxLength(arr, arr.length-1) 就够了,
请问下老师,是不是 >_<
*/
function getMaxLength( nums, index ){
var res = 1;
for( var i = 0; i < index; i ++ ){
if( nums[index] > nums[i] ){
res = Math.max( res, 1 + getMaxLength( nums, i ) );
}
}
return res;
}
2回答
-
liuyubobobo
2017-04-10
00 -
甲骨文_0001
提问者
2017-04-10
就是这份源码,上面的 lenghtOfLIS函数里 就有 循环 nums数组,然后依次比较,最后取得最大值,我的提问源于这份代码,
刚刚看到了 波波老师 gitub上的代码,我的疑虑消解了>_<
012017-04-11
相似问题