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

时间:2016-02-08 12:33:57

标签: c#

我需要计算两个有序集之间的整数数,以确定乐透彩票是否是赢家。一个有序集是winsNumbers,另一个是ticketNumbers。我被告知有一个交叉函数,但我找不到一个函数来实现所需的结果。理想情况下,我想要一个函数返回一个int,表示集合之间的公共整数。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

由于您已明确要求SortedSet方法,因此使用documentation page for the Routing component可能会更有效( O(n)),但会修改源集:< / p>

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