Gus*_*eno 3 algorithm diff edit-distance list
这是CS人士运用该理论的一项练习。
想象一下,您有2个带有元素的容器。文件夹,URL,文件,字符串,这真的没有关系。
什么是计算添加和删除的算法?
注意:如果有很多方法可以解决此问题,请为每个答案发布一个,以便对其进行分析和投票。
编辑:所有的答案用4个容器解决了问题。是否可以仅使用首字母2?
假设您有两个唯一商品列表,而排序无所谓,则可以将它们都视为集合而不是列表
如果考虑维恩图,列表A为一个圆,列表B为另一个圆,则这两个的交点就是常数池。
从A和B移除此交集中的所有元素,并且删除A中剩余的所有内容,同时添加B中剩余的所有内容。
因此,遍历A查找B中的每个项目。如果找到它,则将其从A和B中删除
然后A是已删除的事物的列表,而B是已添加的事物的列表
我认为...
[编辑]好的,新的“仅2个容器”限制仍然适用:
foreach( A ) {
if( eleA NOT IN B ) {
DELETED
}
}
foreach( B ) {
if( eleB NOT IN A ) {
ADDED
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您无需构建新列表,也不会销毁旧列表...但是,与前面的示例一样,它会花费更长的时间,您可以遍历较短的列表,并从较长的列表中删除元素。在这里您需要做两个清单
我会说我的第一个解决方案没有使用4个容器,它只是破坏了两个;-)