js判断两个区间是否存在交集
。
思路:两个区间,两者的最小值中的最大值 <= 两者最大值的最小值时 就存在交集
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){ let start = [Math.min(...arr1),Math.min(...arr2)];//区间的两个最小值 let end = [Math.max(...arr1),Math.max(...arr2)];//区间的两个最大值 return Math.max(...start) <= Math.min(...end);//最大值里的最小值 是否 小于等于 最大值的最小值 } // 验证 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));//3 console.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 => { allArr = allArr.filter(aitem => aitem >= Math.max(...item) || aitem <= Math.min(...item)); }); console.log(allArr); // 判断两个去交是否有交集 function isIntersect(arr1,arr2){ let start = [Math.min(...arr1),Math.min(...arr2)];//区间的两个最小值 let end = [Math.max(...arr1),Math.max(...arr2)];//区间的两个最大值 return Math.max(...start) <= Math.min(...end);//最大值里的最小值 是否 小于等于 最大值的最小值 } // 向区间集合添加新的区间时,判断区间集合中是否存在与新区间有交集的,如果存在,去除区间集合中有交集的区间,再加入新区间 let arr = [[2,5],[4,5],[6,8]]; let arr2 = [3,5]; for(let i = arr.length -1; i >= 0;i--){ if(isIntersect(arr[i],arr2)){ arr.splice(i,1); } } arr.push(arr2) console.log(arr);
跳题逻辑核心思路:
由这样的一个二维数组[[1,3],[4,6]]得到[0,1,3,4,6,7]的一个数组;
推导过程,前推,后退,形成闭环。
。
分类:
javascript
, 算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通