Chu*_*Tey 3 c# linq functional-programming
假如我有这样的数字列表,
[3, 3, 1, 2, 3, 2]
Run Code Online (Sandbox Code Playgroud)
我想按顺序将它们组合在一起,使每组的总和小于或等于5,即正确的答案是:
[3], [3, 1], [2,3], [2]
Run Code Online (Sandbox Code Playgroud)
有没有办法用Linq表达这个?
简单.
var results = xs.Aggregate<int, List<List<int>>>(
new List<List<int>> { new List<int>() },
(a, n) =>
{
if (a.Last().Sum() + n > 5)
{
a.Add(new List<int> { n });
}
else
{
a.Last().Add(n);
}
return a;
});
Run Code Online (Sandbox Code Playgroud)
所以,从这个:
var xs = new [] { 3, 3, 1, 2, 3, 2, };
Run Code Online (Sandbox Code Playgroud)
我明白了: