前言:vue 的 deep 算法用到了这个算法。什么是最长递增子序列,就是给你一个数组 [4,5,1,2,7,3,6,9],算出它们的最长递增子序列 [1,2,3,6,9]。
function LIS(nums) { if (nums.length === 0) { return []; } let results = [[nums[0]]]; for (let i = 1; i < nums.length; i++) { const n = nums[i]; _update(n); } function _update(n) { for (let i = results.length - 1; i >= 0; i--) { const line = results[i]; const tail = line[line.length - 1]; if (n > tail) { results[i + 1] = [...line, n]; break; } else if (n < tail && i === 0) { results[i] = [n]; } } } return results[results.length - 1]; }