回答
確保您的間隔重疊。
然後取兩個對的上限和下限的最大值。
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 –