连接器问题
static class Link {
public int left;
public int right;
public Link(int l, int r) {
this.left = l;
this.right = r;
}
}
public static void main(String[] args) {
String n = "[1,10],[15,20],[18,30],[33,40]";
String m = "[5,4,3,2]";
String[] split1 = m.substring(1, m.length() - 1).split(",");
List<Integer> collect = Arrays.stream(split1).map(Integer::valueOf).sorted().collect(Collectors.toList());
String[] ns = n.substring(1, n.length() - 1).split("],\\[");
List<Link> matrix = new ArrayList<>();
List<Link> ms = new ArrayList<>();
for (int i = 0; i < ns.length; i++) {
String[] split = ns[i].split(",");
matrix.add(new Link(Integer.valueOf(split[0]), Integer.valueOf(split[1])));
}
Collections.sort(matrix, (b1, b2) -> {
return b1.left - b2.left;
});
for (int i = 1; i < matrix.size(); i++) {
if (matrix.get(i - 1).right < matrix.get(i).left) {
boolean f = true;
for (int i1 = 0; i1 < collect.size(); i1++) {
if (collect.get(i1)>=(matrix.get(i).left-matrix.get(i - 1).right)){
f=false;
Link link = new Link(matrix.get(i - 1).left, matrix.get(i).right);
matrix.set(i,link);
collect.remove(i1);
break;
}
}
if (f){
ms.add(matrix.get(i - 1));
}
}else {
if (matrix.get(i - 1).right < matrix.get(i).right) {
Link link = new Link(matrix.get(i - 1).left, matrix.get(i).right);
matrix.set(i,link);
}else {
Link link = new Link(matrix.get(i - 1).left, matrix.get(i-1).right);
matrix.set(i,link);
}
}
}
ms.add(matrix.get(matrix.size()-1));
System.out.println(ms.size());
}