多個區(qū)間的重疊校驗

需求:

要求校驗多個時間區(qū)間是否存在重疊,在此把時間區(qū)間抽象成一個長度為2的數(shù)字?jǐn)?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);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容