diff 算法原理

2018-06-05  本文已影响0人  樱木夜访流川枫
一、找到相同的前置元素、后置元素;

1、旧数组为空,将新数组的剩余元素插入
2、新数组为空,将旧数组的剩余元素删除
3、新、旧数组都不为空,执行第二步。

二、找到需要被删除、插入、移动的元素

数组p:与新数组的长度相同,与新数组是相互映射关系,
元素在旧数组中的索引 存储在 元素在新数组中的位置

三、找到最少的移动次数

1、找到 P 数组的最长递增子序列来做动态规划,新集合中不属于这个序列的将会被移动。

2、同时尾部遍历新数组和 LIS 序列,查看元素的位置是否能与 LIS 序列的任何一个值匹配:

a:可以匹配,保留位置;
b:不能匹配,移动到到前面;
c:找不到,插入元素;

上一篇 下一篇

猜你喜欢

热点阅读