鉴于我有一个这样的整数列表:
List<int> items = new List<int> {200, 100, 50, 20, 10, 5, 2, 1};
并且假设我有一个数字,比如 13,我将如何使用 LINQ(或任何其他方式)从列表中找到加起来为 13 的数字。该列表始终按降序排列。
例如:13 = 10 + 2+ 1,所以 linq 操作会返回一个包含 10,2 和 1 的整数列表。
如果我们无法像 24 那样找到完整的匹配项,则可以生成异常。
努力:
[Test]
public void Should_find_subset()
{
var items = new List<int>() {200, 100, 50, 20, 10, 5, 2, 1};
var find = 13;
var result = new List<int>();
var subset = new List<int>();
bool found = false;
foreach (var item in items)
{
if (item == find)
{
result.Add(item);
found = true;
}
if (item < find)
{
subset.Add(item);
found = subset.Sum() == find;
}
if (found)
break;
}
}
谢谢,
-麦克风