c# 合并重叠时间段的算法

一.采用非排序:

方案一:

使用递归算法,如不喜欢递归的伙伴们,可以使用whie代替。

1.文件:Extract_Chao.cs(核心)

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Extract
 8 {
 9     public class Extract_Chao
10     {
11         List<ExtractInfo> extractList = new List<ExtractInfo>();
12         public void Main()
13         {
14             var list = AddExtract();
15             BuidExtract(list, 0);
16 
17             for (int i = 0; i < extractList.Count; i++)
18             {
19                 if (extractList[i] == null) continue;
20                 Console.WriteLine(extractList[i].StartPoint + "-------" + extractList[i].EndPoint);
21             }
22         }
23 
24         private void BuidExtract(List<ExtractInfo> list, int num)
25         {
26             for (int i = 0; i < list.Count; i++)
27             {
28           if(i==num)continue;
29 
30                 if (list[i] != null &&list[num]!=null)
31                 {
32                     if (list[i].StartPoint > list[num].StartPoint && list[i].StartPoint <= list[num].EndPoint)
33                     {
34                         if (list[i].EndPoint > list[num].EndPoint)
35                         {
36                             var extractTemp = new ExtractInfo() { StartPoint = list[num].StartPoint, EndPoint = list[i].EndPoint };
37                             list[num] = extractTemp;
38                 //如果数组有变化,那么就重新递归回调,(我的死穴)
39                  num=0;
40                       BuidExtract(list,num);
41                         }
42                         list[i] = null;
43                     }
44                 }
45             }
46 
47             num++;
48             
49             if (num < list.Count)
50             {
51                 BuidExtract(list, num);
52             }
53             else
54             {
55                 extractList = list;
56             }
57 
58 
59         }
60 
61         private List<ExtractInfo> AddExtract()
62         {
63             var list = new List<ExtractInfo>();
64             list.Add(new ExtractInfo() { StartPoint = 24, EndPoint = 41 });
65             list.Add(new ExtractInfo() { StartPoint = 58, EndPoint = 75 });
66             list.Add(new ExtractInfo() { StartPoint = 62, EndPoint = 80 });
67             list.Add(new ExtractInfo() { StartPoint = 79, EndPoint = 89 });
68 
69             list.Add(new ExtractInfo() { StartPoint = 5, EndPoint = 10 });
70             list.Add(new ExtractInfo() { StartPoint = 20, EndPoint = 30 });
71             list.Add(new ExtractInfo() { StartPoint = 6, EndPoint = 25 });
72            
73 
74             return list;
75         }
76 
77 
78     }
79 }
View Code

相关文章:

  • 2022-12-23
  • 2021-09-22
  • 2021-04-13
  • 2021-08-08
  • 2021-12-25
  • 2022-12-23
  • 2021-07-10
  • 2021-07-06
猜你喜欢
  • 2022-12-23
  • 2022-03-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-27
  • 2021-05-22
相关资源
相似解决方案