首先Diff算法就是有两个虚拟DOM节点进行比较
    以数组为例,我们在对数据进行增删改查的时候,数据发生了变动,我们如何知道它变动了什么东西呢
    所谓的dom节点,我们可以理解为由数据映射而来的。
    所以我们就以新的数据跟旧的数据进行比较,就能知道变动了什么。
    笨的方法:一一比较
    如下图:
    A和A 比较,B和B比较,C和D比较,发现C和D不想等,删除C。以此类推:会发现4个节点不一样(D和E是需要删除的),需要操作4个节点。删除CF,插入DE,再删除DE
    image.png
    头尾法:
    从开头进行比较,找到不同的点,记录为i,如上图i=2
    从尾部开始比较,找到不同的点,记录为e1,如上图e1=3
    那么就能得知:从下标i到e1的都是不相同的,需要删除。只需要操作两个节点就可以了:删除c和f

    image.png
    笨方法:一一比较,我们需要操作5次节点。其中替换c->f , d->g,e->c,新增de

    当使用头尾算法不满足:删除(i>e2)、新增(i>e1)时,需要用到下面的方法:
    image.png
    提到头尾算法
    对于中间这种乱序的 就是最长上升子序列

    文章
    https://juejin.cn/post/6861960532048642061