给定一个包含唯一对象的数组和另一个包含第一个数组中的对象的数组,我需要一个索引数组,其中包含第一个数组中每个对象的索引。
例子:
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/