思路:兩個區間,兩者的最小值中的最大值 <= 兩者最大值的最小值時 就存在交集
let arr1 = [1,4];let arr2 = [2,5];
let arr3 = [5,2];
let arr4 = [4,5];
let arr5 = [9,5];
let arr6 = [1,4];
let arr7 = [5,6];
let arr8 = [5,5];
//判斷兩個區間是否相交
function
isintersect(arr1,arr2)
//驗證
console.log(isintersect(arr1,arr2));//
true
console.log(isintersect(arr1,arr3));//
true
console.log(isintersect(arr1,arr4));//
true
console.log(isintersect(arr1,arr5));//
false
console.log(isintersect(arr1,arr6));//
true
console.log(isintersect(arr1,arr7));//
false
console.log(isintersect(arr1,arr8));//
false
//補充
console.log(math.max(1,2,3,3,3));//
3console.log(math.min(1,1,2,3,3,3));//
1
另一些有意思的小演算法
//用區間集合篩選出互斥的部分
let allarr = [0,1,2,3,4,5,6,7,8,9
]; let a = [[1,3],[6,9
]]; a.foreach(item =>);
console.log(allarr);
//判斷兩個去交是否有交集
function isintersect(arr1,arr2)
//向區間集合新增新的區間時,判斷區間集合中是否存在與新區間有交集的,如果存在,去除區間集合中有交集的區間,再加入新區間
let arr = [[2,5],[4,5],[6,8
]]; let arr2 = [3,5
];
for(let i = arr.length -1; i >= 0;i--)
}arr.push(arr2)
console.log(arr);
跳題邏輯核心思路:
由這樣的乙個二維陣列[[1,3],[4,6]]得到[0,1,3,4,6,7]的乙個陣列;
推導過程,前推,後退,形成閉環。
js判斷兩個數值區間是否存在重疊或覆蓋
分享乙個比較好的判斷區間是否重疊的方法 栗子 比如學校排課表的課時,判斷同一天是否存在重疊 資料舉例 a課程 開始課時第1節,結束課時第3節,b課程 開始課時第2節,結束課時第4節。思路 比較開始課時陣列的最大值和結束課時陣列的最小值,若小於或等於則重疊,反之不重疊,也就是沒有交集或包含的情況。1 ...
演算法 判斷兩個區間是否重疊
判斷兩個區間是否重疊 假設區間表示為 start,end 先存在兩個區間a,b.兩個區間的關係有兩種 重疊與不重疊 重疊的情況有4種,兩種相交,兩種包含 很容易想到,此處不示意 不重疊有兩種情況 a在b前面,a在b後面 因此很容易得到判斷區間重疊的方法 1 正向判斷,列出四種重疊的情況,滿足其一,則...
js 判斷兩個變數是否相等
判斷兩個變數是否相等是程式設計中非常重要的運算。在處理原始值時,這種運算相當簡單,但涉及物件,任務就稍有點複雜。ecmascript 提供了兩套等性運算子 等號和非等號用於處理原始值,全等號和非全等號用於處理物件。在 ecmascript 中,等號由雙等號 表示,當且僅當兩個運算數相等時,它返回 t...