【问题标题】:How to create Monolithic lists from array in increasing order (sub-Lists)如何按递增顺序从数组创建整体列表(子列表)
【发布时间】:2015-11-11 17:15:50
【问题描述】:

我必须在 c# 中按递增顺序从数组创建一个整体列表。我被给予[1 2 4 7 5 6 3 2] 作为测试输入,其测试输出为[[1 2 4 7] [5 6] [3] [2]]。问题是我根本不能够理解什么是问题以及它要求我做什么,所以我开始了。

有人可以请我在当前的阵列场景中单片意味着什么?以及这4个数组输出是如何从输入数组产生的?

编辑 我已经了解这些子列表是如何在输入数组上创建的,它们是在input[i]>input[i+1] 时创建的。但是如何在列表中编写这样的动态子列表呢?

【问题讨论】:

  • 它似乎正在创建一个数组数组,其中每个子数组一旦找到低于前一个的条目就会重新开始。在您的输入中,由于7>5,然后 5 开始一个新的子数组。由于6>3,3开始新的子数组等
  • 你怎么不问你的Instructor || Boss || Supervisor
  • @MethodMan 这是我在互联网上找到的一个问题,无法理解所以我问,但是如何实现呢? (我们必须在列表中动态地做一些事情)
  • @RobertMcKee 谢谢你第一眼看到,我不能。但问题是如何在 list 中实现这样的动态列表?

标签: c# arrays algorithm data-structures


【解决方案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&lt;IEnumerable&lt;int&gt;&gt;,它仅在枚举时被遍历,并且更好,但我将把它作为练习留给你或其他人去做。

【讨论】:

  • 错误 1 ​​在行 list.Add(sublist.ToArray());
  • 而且我认为您的算法不正确,它只会在“var answer”的第 5 个索引处打印 [6,3,2],其余索引将为零值。请注意,有比较input[i] 和 input[i+1] 的意思是 if(input[i]
  • 更新了答案并进行了修复。
【解决方案2】:

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;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-26
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    相关资源
    最近更新 更多