给定一个简单的已经排序的整数列表,例如“1,2,5,7,8,9”,我如何得到每个子序列的第一个元素,以及它持续多长时间?
期望的结果将是:
我怎样才能在c#中实现这个?
经过初步思考后,我想出了这个:
作为“horacitas”我的排序列表,例如值“8,12,13,16,17,18”:
horacitas.Sort();
Dictionary<int, int> horas = new Dictionary<int, int>();
for(int i =0; i< horacitas.Count -1;i++)
{
int counter = 0;
int j = i;
while(horacitas[j+1]== horacitas[j]+1 && j<horacitas.Count - 1)
{
counter++;
j++;
}
horas.Add(horacitas[i], counter);
}
但是我遇到了一些问题,我最终在序列中为每个项目添加了不需要的条目,而不仅仅是为了起始者(例如,我最终得到了13,17,18的条目)。 / p>
答案 0 :(得分:2)
循环遍历。每次迭代,检查当前数字是否比最后一个高1。如果是,请将其添加到序列中。如果没有,请创建一个新序列。最后,打印出每个序列。
您可以随意存储“序列”。有多种方法可以做到。
修改强> 现在你已经提供了代码:
您遇到的问题是您的For-Loop正在迭代列表中的每个条目。你的方法是有一个内部while循环来获得每个序列。这很好,但需要调整。
试试这个:
if(document.location.search.length) {
//query string exists - do something
}
else
{
//query string does not exist - do something
}
注意:此方法仅在没有值重复时才有效。例如,如果您有列表“5,5”,那么它将会出错,因为您无法将两次“5”添加到字典中。