需求:
要求校驗多個時間區(qū)間是否存在重疊茵臭,在此把時間區(qū)間抽象成一個長度為2的數(shù)字數(shù)組,形如:[2,10]舅世。
思路:
想校驗多個區(qū)間是否存在重疊旦委,方法還是很多的,例如:判斷剩余區(qū)間合在一起的長度加上是所有區(qū)間的長度是否是24(不可能超過一天)雏亚;是否存在一個值在兩個以上區(qū)間出現(xiàn)過缨硝;按照起點按從小到大排序,如果小的區(qū)間的終點大于大一點的區(qū)間的起點就說明重疊罢低。第二個辦法邏輯簡單缺點是效率低查辩;第一個和第三個都需要先排序,相比較選擇第三種較為方便网持。
解決辦法:
var arr = [[14,22],[1,6],[8,12],[14,50]];
function db(arr){
//排序
var index;
for(var j=0;j
for(var i=j+1;i
if(arr[i][0] < arr[j][0]){
index = arr[i];
arr[i] = arr[j];
arr[j] = index;
}
}
};
//比較
for(var j=0;j
if(arr[j][1] > arr[j+1][0]){
index = "err";
break;
}
}
if(index === "err"){
return false;
}
return true;
}
db(arr);