gpt4 book ai didi

c# - 查找链接元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:35 25 4
gpt4 key购买 nike

美好的一天!我有一本字典Dictionary<long, List<long>>其中 List 的值可以是字典的键。

我想要做的是分离这个字典的键和值来设置代表链接的元素。所以如果我有

dict[1] = new List<long>() { 12, 4, 2 };
dict[2] = new List<long>() { 7 };
dict[3] = new List<long>() { 25, 19, 27 };

我想得到两个输出集合 { 1, 12, 4, 2, 7 } 和 { 3, 25, 19 27 };

我找到了一个解决方案,但它看起来不够快。

 List<HashSet<long>> graphs = new List<HashSet<long>>();
foreach (var kv in dict)
{
HashSet<long> maybeNewGraph = new HashSet<long>(kv.Value);
maybeNewGraph.Add(kv.Key);

bool success = false;
foreach (var hashSet in graphs)
{
if (hashSet.Overlaps(maybeNewGraph))
{
hashSet.UnionWith(maybeNewGraph);
success = true;
break;
}
}
if (!success)
{
graphs.Add(maybeNewGraph);
}
}

对于这样的问题有更好的解决方案吗? 谢谢。

UPD:更正示例。谢谢斯维克

最佳答案

在我看来,您正在尝试实现一种算法来解决不相交的集合。幸运的是,网络上有现有技术。现在,我已将正确的搜索词交给您,Wikipedia是一个很好的起点。

这是一个 c# implementation .我不能保证它的效率。

关于c# - 查找链接元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com