1、数组中的最长连续递增子串 function findL(arr){ let arr_act=[]; let arr_pre=[]; let arr_max=[]; for(var i=0;i<arr.length;i++){ let val=arr[i] if(arr_act.length==0){ arr_act.push(val) }else if(val<arr_act[arr_act.length-1]){ arr_pre=arr_act; arr_act=[]; arr_act.push(val) }else { arr_act.push(val) } if(arr_pre.length>arr_max.length){ arr_max=arr_pre; } } return arr_max.length>arr_act.length?arr_max:arr_act } 2、数组中最长的递增子串(不要求连续) function findJ(arr){ let arr_max=[]; let cache=[]; for(var i=0;i<arr.length;i++){ cache.push([]) } for(let i=0;i<arr.length;i++){ for(let j=0;j<i;j++){ if(arr[j]<arr[i]){ if(cache[i].length<cache[j].length+1){ cache[i]=[].concat(cache[j]) } } } cache[i].push(arr[i]); if(cache[i].length>arr_max.length){ arr_max=[].concat(cache[i]) } } return arr_max }