我有一個陣列,說
var myArray = new[] { 1, 2, 3, 1, 3, 1, 3, 1, 2, 1, 2, 7};
我想獲得一個新串列,該串列存盤該陣列元素的總和,當我將第一個元素添加到下一個元素時,它將結果向前,然后添加到下一個等,但是如果總和結果大于 6,它跳到下一個元素并開始一個新的總和,但將前一個總和保存到新串列中。
所以,對于我上面的陣列,我期待這樣的結果
6, 5, 6, 3, 7
我該怎么做?
這是我嘗試過的。這里的問題是最后一個元素總是被跳過。我也擔心這是否是解決問題的完美方法。
int[] DoAggregate(int[] array)
{
var prev = 0;
bool first = true;
var sum = 0;
List<int> result = new();
foreach (var item in array)
{
if (first)
{
first = false;
}
else
{
sum = sum prev;
if ((sum item) > 6)
{
result.Add(sum);
sum = 0;
prev = item;
continue;
}
}
prev = item;
}
return result.ToArray();
}
uj5u.com熱心網友回復:
看起來您需要做的就是考慮sum prev回圈后值何時大于 0:
int[] DoAggregate(int[] array)
{
var prev = default(int);
bool first = true;
var sum = 0;
List<int> result = new();
foreach (var item in array)
{
if (first)
{
first = false;
}
else
{
sum = sum prev;
if ((sum item) > 6)
{
result.Add(sum);
sum = 0;
prev = item;
continue;
}
}
prev = item;
}
sum = sum prev;
if (sum > 0)
{
result.Add(sum);
}
return result.ToArray();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522070.html
標籤:C#算法总计的
