【发布时间】:2013-06-06 13:47:20
【问题描述】:
编写将遍历列表中每个 2 元素组合的控制结构的最佳方法是什么?
例子:
{0,1,2}
我想让一段代码运行 3 次,每次运行一次:
{0,1}
{1,2}
{0,2}
我尝试了以下
foreach (int i in input)
{
foreach (int j in input.Where(o => o != i))
{
//Execute code
}
}
但是,当列表包含两个相同的元素时,这将不起作用。与
{0,2,0}
我仍然想比较元素 0 和 0。该值无关紧要。
【问题讨论】:
-
你对每一对都在做什么?您的解决方案和 Jon 的解决方案都是 O(n squared)。根据您正在做的事情,可能会有一个 O(n) 解决方案。 (例如,在 C# 编译器中,您需要比较重载解决问题中的每一对方法以确定唯一的最佳方法;即使更好的方法关系是不传递的,也有一个 O(n) 算法。)
标签: c# linq list combinations