区间是否重合
刷题时候遇到了一个 两区间重合判定问题,写出了bug ,是因为思路不清楚,想明白以后总结一下。
给出[ a,b] , [c, d ] 两个闭区间 判断是否存在重合的部分
两区间的分布一共有六种情况, 其中四种有重合,四种分离,因此可以正向反向两种思路 。
1.正向判断
四种情况分别是 区间ab包含区间cd , 区间cd 包含区间ab ,区间ab 右部分与 区间cd重合, 区间ab左部分与区间 cd重合。
四种情况满足一个即可。
boole IsOverlap(int a,int b,int c, int d){ return (a<=c&&b>=d) || (a>=c)&&(b<=d) ||( a>=c && a<=d) || (b>= c && b<=d) ;
2.反向判断
两种不重叠情况是 ab全部在cd左边, ab全部在cd右边。 两种情况都不满足 则重叠。
bool IsOverlap (int a, int b, int c, int d){ return ! ( b <c || a> d) ;
比较起来, 第二种思路明显简洁 。
3.计算法
发现一种计算的方法,可以对所有情况有效,并且返回重叠长度
int overlap_len(int a, int b, int c, int d) { int x1= max( a, c); int x2= min( b, d); return max( x2-x1, 0) ;
}
怕什么真理无穷,进一寸有一寸的欢喜
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)