【发布时间】:2019-03-06 22:42:31
【问题描述】:
给定 2 个具有 int start、int end 和 boolean 状态的区间,组合 2 个区间,如下所示
i1 和 i2 是 2 ArrayList<Intreval> 并且 res 应该包含组合区间的输出。
例子:
-INF --------- 6 ------- 10 --------- 30 --------- INF
F T T F
-INF --- 5 ------------------- 20 --------- 35 ---- INF
T T F F
输出:
-INF ---5 ---- 6 -------- 10 -- 20 ---- 30 -- 35 --- INF
F F T T F F F
代码创建 i1 和 i2,它们是 ArrayList<Intervals>。 i1 has [[-INF,6,false],[6,10,true],[10,30,true],[30,INF,false]] 和 i2 has [[-INF,5,true],[5,20,true],[20,35,false],[35,INF,false]] 和 res should contain [[-INF,5,false],[5,6,false],[6,10,true],[10,20,true],[20,30,false],[30,35,false],[35,INF,false]]
代码:
Class Interval
{
int start;
int end;
boolean status;
public Interval(int start, int end, boolean status)
{
this.start = start;
this.end = end;
this.status = status;
}
}
class MyCode {
public static void main (String[] args) {
ArrayList<Interval> i1 = new ArrayList<Interval>();
i1.add(new Interval(Integer.MIN_VALUE, 6, false));
i1.add(new Interval(6,10,true));
i1.add(new Interval(10,30,true));
i1.add(new Interval(30,Integer.MAX_VALUE,false));
ArrayList<Interval> i2 = new ArrayList<Interval>();
i2.add(new Interval(Integer.MIN_VALUE, 5, true));
i2.add(new Interval(5,20,true));
i2.add(new Interval(20,35,false));
i2.add(new Interval(35,Integer.MAX_VALUE,false));
int i=0, j=0;
ArrayList<Interval> res = new ArrayList<Interval>();
}
}
【问题讨论】:
-
那么,你的问题是什么?
-
如何找到两个区间之间的交集并更改 i 和 j 值并将其添加到 res 中? res 应该有组合的区间 i1 和 i2 以及交集状态的 &&。
-
代码现在做了什么,你期望它做什么?
-
代码创建 i1 和 i2,它们是 ArrayList
。 i1 有 [[-INF,6,false],[6,10,true],[10,30,true],[30,INF,false]] 而 i2 有 [[-INF,5,true],[ 5,20,true],[20,35,false],[35,INF,false]] 和 res 应该包含 [[-INF,5,false],[5,6,false],[6,10,真],[10,20,真],[20,30,假],[30,35,假],[35,INF,假]] -
不清楚为什么预期的结果以
[-INF,5,false],[5,6,false]开头。
标签: java algorithm data-structures intervals priority-queue