动态规划 序列最大连接数量

74 阅读1分钟

题目

image.png

  • 先对数组进行排序,然后递归从左往右模型,当前位置选或者不选,选的情况是要和之前已经选择的位置能首尾对应
// 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
);