我有一个简单的整数列表,
original = new List<int>() { 3, 6, 12, 7, 7, 7, 7, 8, 10, 5, 5, 4 };
和整数的临时列表,
temp = new List<int>();
和列表清单
listOf = new List<List<int>>();
我希望将原始列表分成多个列表,我使用以下算法将循环值分配给列表temp
,然后将指定的值推送到listOf
,之后我清除列表temp
以便我可以分配新值。
for (int i = 0; i < orginal.Count; i++) {
if (orginal[i] > orginal[i + 1]) {
for (int i2 = i + 1; i2 < orginal.Count; i2++) {
if (orginal[i2] <= orginal[i2 + 1]) {
listin.Add(orginal[i2]);
} else {
listOf.Add(listin);
listin.Clear();
}
}
}
}
想要的输出类似于:
listOf[0] = 7 7 7 7 8 10
listOf[1] = 5 5
我需要更改什么来实现此输出?
答案 0 :(得分:3)
这是您的错误:
listOf.Add(listin);
listin.Clear();
您已将listin
添加到listOf
,然后立即将其清除。现在删除listOf
内的任何内容,这不是您想要发生的内容。
相反,您应该将listin
的“所有权”转移到listOf
,并为自己创建一个全新的列表:
listOf.Add(listin);
listin = new List<int>();
答案 1 :(得分:-1)
试试以下内容。没有必要明确:
static void Main(string[] args)
{
List<int> original = new List<int>() { 3, 6, 12, 7, 7, 7, 7, 8, 10, 5, 5, 4 };
List<int> temp = null;
while (original.Count > 0)
{
int count = 1;
for(; (count < original.Count) && (original[count] >= original[count - 1]); count++);
temp = original.Take(count).ToList();
original = original.Skip(count).ToList();
}
}