c#中交换字典类型参数的复杂性
本文关键字:复杂性 类型参数 字典 交换 | 更新日期: 2023-09-27 18:14:45
我有一个Dictionary<A,B>
,其中A
的对象是唯一的,B
的对象不是。
我想按B
的对象对数据进行分组。
。
Dictionary<A,B> input = GenerateInput();
List<IGrouping<B,A>> output = input
.GroupBy(pair => pair.Value, pair => pair.Key)
.ToList();
- 方法的复杂度是多少?O (n) ?如果复杂度= GroupBy操作的复杂度-我没有找到值。请告诉我并提供文章链接。
- 有更有效/优雅的方式来做这个交换吗?
p。我显式地编写了变量input
和output
的类型,以表明我不需要output
是Dictioany<,>
类型。我需要一个通过A
到B
的容器
方法的复杂度是多少?
正确,是O(n)。GroupBy
使用哈希码对值进行分组;假设B
具有良好的哈希函数,则构造组表的平摊代价为O(n),其中包括"增长"每个组的平摊代价。
是否有更有效/优雅的方法来做这个交换?
O(n)是最有效的。您可以根据分组构建一个字典,而不是一个列表:
IDictionary<B,List<A>> output = input
.GroupBy(pair => pair.Value)
.ToDictionary(g => g.Key, g => g.Select(p.Key).ToList());