我必须在c#中按递增顺序从数组创建一个整体列表。我被赋予[1 2 4 7 5 6 3 2]
作为测试输入,其测试输出为[[1 2 4 7] [5 6] [3] [2]]
。问题是我完全没有能够理解什么是问题,以及我要求我这样做,以便我开始。
有人可以请问我当前阵列中的单片意味着什么吗?以及如何从输入数组产生这4个数组输出?
编辑我已了解如何在输入数组上创建这些子列表,它们是在input[i]>input[i+1]
时创建的。但是如何在列表中编写这样的动态子列表?
答案 0 :(得分:1)
这是老式的方式:
List<int> sublist=new List<int>();
int last=Int32.MinValue;
List<int[]> list=new List<int[]>();
foreach(var i in input)
{
if(i<last)
{
list.Add(sublist.ToArray());
sublist=new List<int>();
}
last=i;
sublist.Add(i);
}
list.Add(sublist.ToArray());
var answer=list.ToArray();
更新的方法是返回仅在枚举时遍历的IEnumerable<IEnumerable<int>>
,并且要好得多,但我会把它作为练习给你或其他人做。
答案 1 :(得分:0)
Java解决方案:
public List<List<Integer>> createMonolithic(List<Integer> list){
List<Integer> r = new ArrayList<Integer>();
List<List<Integer>> result = new ArrayList<List<Integer>>();
for(int i = 0; i < list.size(); i++){
if(i - 1 >=0){
if(list.get(i) < list.get(i-1)){
result.add(r);
r = new ArrayList<Integer>();
r.add(list.get(i));
}else{
r.add(list.get(i));
}
}else{
r.add(list.get(i));
}
}
result.add(r);
return result;
}