c# - 对象数组到索引数组

标签 c# algorithm time-complexity

给定一个包含唯一对象的数组和另一个包含第一个数组中的对象的数组,我需要一个索引数组,其中包含第一个数组中每个对象的索引。

例子:

var a = new MyClass(1);
var b = new MyClass(2);
var c = new MyClass(3);
MyClass[] firstArray = {a, b, c}; // these all are unique
MyClass[] secondArray = {b, a, a, c, b};

在这种情况下,输出将是 {2, 1, 1, 3, 2}

这显然可以通过比较嵌套循环内的每个对象来完成,但这会导致 O(n*m) 复杂度。这个问题有更好的解决方案吗?

最佳答案

遍历第一个数组并构建一个 Dictionary<T, int>保存每个项目的索引。

遍历第二个数组并在字典中查找每个项目。

O(n + m) .

关于c# - 对象数组到索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20911634/

相关文章:

c# - foreach 循环与 Dictionary 一起使用

c# - 修复 SubSonic 2.2 日历,当控件不可见时如何获取 RegisterClientScriptIninclude 调用以进行渲染?

java - 数组中的对数和

c++ - 将大的十六进制数转换为十进制形式(基数为 10 的形式)的算法

algorithm - 给定 n 个苹果出售的最大利润

c# - LINQ to Entities 无法识别方法 NotSupportedException

c# - Asp.Net Core API 文件上传

algorithm - 如何将遗传算法与一些启发式算法混合

algorithm - 使用递归关系查找时间复杂度

c++ - 我可以希望从映射中删除元素或通过迭代器设置元素不比对数差吗?