如何计算两个排序集合之间的公共整数数

本文关键字:之间 数数 整数 集合 两个 何计算 计算 排序 | 更新日期: 2023-09-27 18:33:44

我需要计算两个排序集合之间的整数数量,以确定乐透彩票是否是中奖者。一个排序的集合是中奖号码和另一个彩票号码。有人告诉我有一个相交函数,但我找不到一个函数来实现所需的结果。理想情况下,我想要一个返回一个 int 的函数,该函数表示集合之间公共整数的数量。

如何计算两个排序集合之间的公共整数数

即使它没有排序,这也有效:

IEnumerable<int> winning = winningNumbers.Intersect(ticketNumbers);
int countOfWinningNumbers = winning.Count();

如果要进一步处理它,最好创建一个集合:

List<int> winningList = winning.ToList();
int countOfWinningNumbers = winningList.Count;

由于您已经明确要求采用SortedSet方法,因此使用 SortedSet.IntersectWith 可能更有效(O(n)),但会修改源代码集:

SortedSet<int> winningNumbers = new SortedSet<int> { 2, 3, 7 };
SortedSet<int> ticketNumbers = new SortedSet<int> { 1, 2, 3, 4, 5 };
ticketNumbers.IntersectWith(winningNumbers);  // now ticketNumbers contains only 2 and 3