function getSequence(arr) { let maxLength = 0; // 记录最长递增子序列的长度 let maxSeq = []; // 记录最长递增子序列 let sequences = new Array(arr.length).fill().map(() => []); // console.log(sequences); // 遍历数组 for (let i = 0; i < arr.length; i++) { // 创建一个以当前元素为结尾的递增子序列 let seq = [arr[i]]; // 遍历之前的元素,找到比当前元素小的元素,从而构建递增子序列 for (let j = 0; j < i; j++) { if (arr[j] < arr[i]) { // 把之前存储的序列和当前元素拼接起来 seq = sequences[j].concat(arr[i]); } } // 将当前递增子序列存储起来 sequences[i] = seq; // 更新最大的序列 if (seq.length > maxLength) { maxLength = seq.length; maxSeq = seq; } } // console.log(sequences); return maxSeq; } const list = [2, 1, 5, 3, 6, 4, 8, 9, 7]; const result = getSequence(list); console.log(result); // [ 1, 3, 4, 8, 9 ]