Split a list into multiple lists at increasing sequence broken

前端 未结 9 1112
不知归路
不知归路 2021-02-18 19:11

I\'ve a List of int and I want to create multiple List after splitting the original list when a lower or same number is found. Numbers are not in sorted order.<

9条回答
  •  伪装坚强ぢ
    2021-02-18 19:49

    I use a dictionary to get 5 different list as below;

    static void Main(string[] args)
        {
            List data = new List { 1, 2, 1, 2, 3, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6 };
            Dictionary> listDict = new Dictionary>();
    
            int listCnt = 1;
            //as initial value get first value from list
            listDict.Add(listCnt, new List());
            listDict[listCnt].Add(data[0]);
    
    
            for (int i = 1; i < data.Count; i++)
            {
                 if (data[i] > listDict[listCnt].Last())
                {
                    listDict[listCnt].Add(data[i]);
                }
                 else
                {
                    //increase list count and add a new list to dictionary
                    listCnt++;
                    listDict.Add(listCnt, new List());
                    listDict[listCnt].Add(data[i]);
                }
            }
    
            //to use new lists
            foreach (var dic in listDict)
            {
                Console.WriteLine( $"List {dic.Key} : " + string.Join(",", dic.Value.Select(x => x.ToString()).ToArray()));
    
            }
    
        }
    

    Output :

    List 1 : 1,2
    List 2 : 1,2,3
    List 3 : 3
    List 4 : 1,2,3,4
    List 5 : 1,2,3,4,5,6
    

提交回复
热议问题