回答
确保您的间隔重叠。
然后取两个对的上限和下限的最大值。
int lower = Math.max(myPair1.x1, myPair2.x1);
int upper = Math.min(myPair1.x2, myPair2.x2);
if(lower < upper)
return new Pair(lower, upper)
else
throw new CustomException("Intervals not overlap")
有没有什么快速的方法来检查间隔是否重叠? –
您必须检查新时间间隔的下限是否低于新时间间隔的上限 – user2336315
如何:
int from = Math.max(pair1.getX(), pair2.getX());
int to = Math.min(pair1.getY(), pair2.getY());
if (from <= to) {
return new Pair(from, to);
} else {
return null;
}
不应该是从<=到?一个元素范围也是有效的。 –
这取决于。但我已经更新了我的答案:) – BobTheBuilder
我会创造像
class Range {
final int start;
final int end;
private Range(int start; int end) { this.start = start; this.end = end; }
public static Range of(int start, int end) { return new Range(start, end); }
public Range and(Range r) {
return new Range(Math.max(start, r.start), Math.min(end, r.end);
}
}
一类你可以写
Range one = Range.of(360, 780);
Range two = Range.of(420, 800);
Range both = one.and(two);
如果没有重叠怎么办? – BobTheBuilder
@whoAmI在这种情况下,'end' <'start',你得到一个无效的范围。你如何处理这取决于你想要做什么。例如它可以在构造函数中抛出一个异常。 –
有点的java.awt.geom
误用,试试吧:
public static double[] createIntersection(double[] a1, double[] a2) {
Rectangle2D r1 = new Rectangle2D.Double(), r2 = new Rectangle2D.Double();
r1.setFrameFromDiagonal(a1[0], 0, a1[1], 1);
r2.setFrameFromDiagonal(a2[0], 0, a2[1], 1);
Rectangle2D r3 = r1.createIntersection(r2);
return new double[] { r3.getMinX(), r3.getMaxX() };
}
似乎过于简单的任务。 – user2336315
- 1. 身份的可用范围的数字,当两个数字范围是重叠
- 2. 将重叠的数字范围合并为连续的范围
- 3. SQL-做任何数字范围重叠
- 4. 重叠范围SAS
- 5. 根据重叠范围合并两个数据帧
- 6. 范围重叠的UITableViewCell
- 7. 重叠的书页范围
- 8. 重叠日期的范围
- 9. 建立一个“完整的”数字范围w/out重叠
- 10. 如何检查重叠的多个数字范围injavascript
- 11. 重叠范围检查重叠
- 12. 两个日期范围重叠 - 1501个人缺少错误? [PHP]
- 13. 在SQL中以分钟重叠的两个日期范围
- 14. 检查两个日期范围在Rails的重叠
- 15. 查询2字段日期范围重叠日期范围
- 16. 塔防:重叠塔范围
- 17. 检查范围重叠
- 18. SQL重叠日期范围
- 19. 查找重叠范围和
- 20. 分割重叠范围
- 21. 比较重叠范围
- 22. Highcharts列范围重叠列
- 23. awk - 打印重叠范围
- 24. 重叠基因组范围
- 25. 整数范围重叠验证
- 26. 确定两个时间范围是否重叠
- 27. 如何测试两个时间范围是否重叠?
- 28. MySQL检查两个日期范围是否与输入重叠
- 29. 熊猫通过重叠范围在给定以下两个DataFrames
- 30. 如何检查两个时间范围是否重叠?
'result = {max(pair1 [0],pair2 [0]),min(pair1 [1],pair2 [1])}' – reto
检查第一个示例http://community.topcoder。 com/tc?module = Static&d1 = tutorials&d2 = greedyAlg –