<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【你有更好的算法嗎?】合并重疊時(shí)間段算法

      今天在博問中看到一個(gè)比較常見的問題: 求算法(合并重疊時(shí)間段)

      在這里先把問題描述一下:

       

      同一天中的一連串不連續(xù)時(shí)間段,合并其中重疊時(shí)間,如:
      StartTime EndTime
      06:10:58 08:15:28
      07:38:56 10:34:45
      10:55:00 11:34:00
      13:09:34 17:45:23
      14:23:12 15:24:14
      16:14:25 17:52:15
      ...
      合并后為:
      StartTime EndTime
      06:10:58 10:34:45
      10:55:00 11:34:00
      13:09:34 17:52:15
      ...
      時(shí)間復(fù)雜度盡量避免n^2的情況,即集合內(nèi)任一元素與其他元素各比較一次

      這樣類似的問題很常見,下面把我的答案帖出來供大家拍磚,也歡迎大家提出更好的算法

       代碼:

      public class bw22617
          {
              
      private List<Betime> timeList = new List<Betime>() { 
                  
      new Betime{BeginTime=new DateTime(2011,3,1,10,55,0),EndTime=new DateTime(2011,3,1,11,34,0)},
                  
      new Betime{BeginTime=new DateTime(2011,3,1,13,9,34),EndTime=new DateTime(2011,3,1,17,45,23)},
                  
      new Betime{BeginTime=new DateTime(2011,3,1,14,23,12),EndTime=new DateTime(2011,3,1,15,24,14)},
                  
      new Betime{BeginTime=new DateTime(2011,3,1,7,38,56),EndTime=new DateTime(2011,3,1,10,34,45)},
                  
      new Betime{BeginTime=new DateTime(2011,3,1,6,10,58),EndTime=new DateTime(2011,3,1,8,15,28)},
                  
      new Betime{BeginTime=new DateTime(2011,3,1,16,14,25),EndTime=new DateTime(2011,3,1,17,52,15)}
              };

              
      public void Union()
              {
                  
      //先對數(shù)據(jù)排序
                  timeList = timeList.OrderBy(p => p.BeginTime).ToList<Betime>();
                  
      for (int i = 0; i < timeList.Count-1;i++ )
                  {
                      
      int j=i+1;
                      
      if (timeList[i].EndTime >= timeList[j].BeginTime)
                      {
                          
      //處理后一條數(shù)據(jù)的結(jié)束時(shí)間比前一條數(shù)據(jù)結(jié)束時(shí)間小的情況
                          if (timeList[i].EndTime >= timeList[j].EndTime)
                          {
                              timeList[j] 
      = timeList[i];
                          }
                          
      else
                          {
                              timeList[j].BeginTime 
      = timeList[i].BeginTime;
                          }
                          timeList[i] 
      = null;
                      }
                      
      else
                      {
                          i
      ++;
                      }
                  }

                  timeList.ForEach(
                      
      delegate(Betime p)
                      {
                          
      if (p != null)
                          {
                              Console.WriteLine(
      "BeginTime: "+p.BeginTime+"\tEndTime: "+p.EndTime);
                          }
                      }
                  );
              }
          }
          
      public class Betime
          {
              
      public DateTime BeginTime { getset; }
              
      public DateTime EndTime { getset; }
          }

      調(diào)用代碼(很簡單啦):

              static void Main(string[] args)
              {
                  bw22617 test 
      = new bw22617();
                  test.Union();
                  Console.Read();
              }

       結(jié)果:


       

       歡迎大家提出更高效的算法啦!

       非常感謝青龍白虎 的意見,經(jīng)檢查程序確實(shí)有問題,主要在第二條數(shù)據(jù)的結(jié)束時(shí)間比第一條數(shù)據(jù)的結(jié)束時(shí)間還小及數(shù)據(jù)未排序的時(shí)候,現(xiàn)已更改

       
      posted @ 2011-03-01 15:19  artwl  閱讀(4640)  評論(1)    收藏  舉報(bào)

      個(gè)人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設(shè)計(jì)模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 成人免费无码av| 日本熟妇色xxxxx| 亚洲中文字幕成人无码| 99久久精品国产一区二区暴力| 亚洲成人高清av在线| 亚洲一区二区三区丝袜| 亚洲国产精品午夜福利| 崇礼县| 亚洲情色av一区二区| 日韩中文字幕V亚洲中文字幕| 欧美黑人添添高潮a片www| 九九热视频免费在线播放| 精品国产一区二区三区av性色| 亚洲国产成人极品综合| 中文字幕亚洲男人的天堂网络| 成人午夜电影福利免费| 精品人妻大屁股白浆无码| 日本一区二区三区在线播放| 香蕉久久一区二区不卡无毒影院| 在线成人国产天堂精品av| 精品国产一区av天美传媒| 久久精品国产99国产精品严洲 | 国产绿帽在线视频看| 国产精品香港三级国产av| 人妻在线中文字幕| 全国最大成人网| 精品一区二区不卡免费| xxxxbbbb欧美残疾人| 国产青榴视频在线观看| 色www永久免费视频| 又黄又刺激又黄又舒服| 91青青草视频在线观看| 亚洲综合久久精品国产高清| 亚洲精品动漫免费二区| 黑人巨大精品欧美一区二区| 内射囯产旡码丰满少妇| 中文字幕理伦午夜福利片| 彭水| 免费看欧美日韩一区二区三区| 久久久久免费看少妇高潮A片| 日韩国产成人精品视频|