当前位置:  开发笔记 > 编程语言 > 正文

找到两个数组之间差异的算法

如何解决《找到两个数组之间差异的算法》经验,为你挑选了2个好方法。

给定两个数组,是否有一种快速算法可以找到两者中不同的所有元素?例如,考虑两个键阵列(如键盘键)结构.一个表示当前按下的键,另一个表示在最后一个时间步骤中按下的键.

Keys[] oldKeys = LastKeyboardState.GetPressedKeys();
Keys[] currKeys = CurrentKeyboardState.GetPressedKeys();

// the user just pressed these key(s) during the last timestep.
Keys[] diff = ...

建议非常感谢!



1> DevinB..:

蛮力算法将是m*n,其中m和n是两个数组的大小.

如果您使用任何种类的树而不是线性数组,那么您的时间将降至m*log2(n)

算法就是

foreach(key ok in oldkeys)
{
    if(!oldKeys.Contains(ok))
    {
        diff.add(ok);
    }
}
foreach(key nk in newkeys)
{
    if(!newKeys.Contains(nk))
    {
        diff.add(nk);
    }
}



2> JaredPar..:

试试这个

var diff = oldKeys.Except(currKeys);

这需要C#3.0

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有