🎟️

vue3的最长递增子序列优化

leetcode300题的要求是只需要拿到他的最长递增子序列的长度,并不需要具体的
[10, 9, 2, 5, 3, 7, 101, 4, 1]
p: / / / 2 2 4 5 4 /
10
9
2
2 5
2 3
2 3 7
2 3 7 101
2 3 4 101
1 3. 4 101
 
贪心算法,我们可以把当前的第一项当成数据的最长子序列,然后依次遍历
  1. 默认是第0项目 [10]
  1. 找到第1项目9,这时候(贪心)舍弃10,取9,因为前面是9可以接纳更多的子,变成: [9]
  1. 然后走到2,则替换掉原本的9,变成 [2]
  1. 走到5的时候,因为2比5小,所以直接追加上去,变成了[2,5]
  1. 接着走到了3,因为2比3小,所以替换掉2,变成了[2,5] (为什么要换掉?主要是换掉不影响我们拿到子序列的个数)[3,5]
  1. 后面走到7,直接追加 变成[3,5,7]
  1. 走到101,直接追加[3,5,7,101]
  1. 走到4,替换掉5 变成[3,4,7,101]
  1. 走到1 保持不变
 
p=[0,0,0,0,0,0]
result = [0]
P:yong lai
newIndex:替换之后所有的位置坐标
原始节点
2
3
7
6
8
4
9
p
/
0
1
1
3
1
result
0
0,1
0,1,2
0,1,2
0,1,2,3
01
重排之后位置
2
2,3
2,3,7
2,3,6
2,3,6,8
2,3,4,8