题目
- 先对数组进行排序,然后递归从左往右模型,当前位置选或者不选,选的情况是要和之前已经选择的位置能首尾对应
// index:当前来到的索引
// preIndex:之前选择的索引
function process(arr, index, preIndex) {
if (index == arr.length) {
return 0;
}
// 当前位置不选
let p1 = process(arr, index + 1, preIndex);
// 选中当前位置
let p2 = 0;
if (arr[preIndex][1] === arr[index][0] || preIndex === -1) {
p2 = 1 + process(arr, index + 1, arr[index][0]);
}
return Math.max(p1, p2);
}
process(
arr.sort((a, b) => a[0] - b[0]),
0,
-1
);