import java.util.Arrays;
import java.util.Comparator;
class Interval {
int start;
int end;
public Interval(int start, int end) {
this.start = start;
this.end = end;
}
}
class MyComparator implements Comparator<Interval> {
public int compare(Interval a, Interval b) {
return b.start - a. start;
}
}
class MergeOverlappingIntervals {
static int max(int a, int b) {
return (a>b)?a:b;
}
static int min(int a, int b) {
return (a<b)?a:b;
}
static void mergeOverlappingIntervals(Interval[] arr) {
int n = arr.length;
Arrays.
sort(arr,
new MyComparator
());
int index = 0;
for(int i=0;i<n;i++) {
if(index != 0 && arr[i].end >= arr[index-1].start) {
while(index != 0 && arr[i].end >= arr[index-1].start) {
arr[index-1].start = min(arr[index-1].start,arr[i].start);
arr[index-1].end = max(arr[index-1].end,arr[i].end);
index--;
}
}
else
arr[index] = arr[i];
index++;
}
for(int i=0;i<index;i++)
System.
out.
print("[" + arr
[i
].
start + ", " + arr
[i
].
end + "], ");
}
static void printArray(Interval[] arr) {
for(int i=0;i<arr.length;i++)
System.
out.
print("[" + arr
[i
].
start + ", " + arr
[i
].
end + "], "); }
public static void main
(String[] args
) { Interval[] arr = {new Interval(1,3),new Interval(2,4),new Interval(5,7), new Interval(6,8)};
printArray(arr);
mergeOverlappingIntervals(arr);
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKCmNsYXNzIEludGVydmFsIHsKCWludCBzdGFydDsKCWludCBlbmQ7CgkKCXB1YmxpYyBJbnRlcnZhbChpbnQgc3RhcnQsIGludCBlbmQpIHsKCQl0aGlzLnN0YXJ0ID0gc3RhcnQ7CgkJdGhpcy5lbmQgPSBlbmQ7Cgl9Cn0KCmNsYXNzIE15Q29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8SW50ZXJ2YWw+IHsKCXB1YmxpYyBpbnQgY29tcGFyZShJbnRlcnZhbCBhLCBJbnRlcnZhbCBiKSB7CgkJcmV0dXJuIGIuc3RhcnQgLSBhLiBzdGFydDsKCX0KfQoKY2xhc3MgTWVyZ2VPdmVybGFwcGluZ0ludGVydmFscyB7CgoJc3RhdGljIGludCBtYXgoaW50IGEsIGludCBiKSB7CgkJcmV0dXJuIChhPmIpP2E6YjsKCX0KCQoJc3RhdGljIGludCBtaW4oaW50IGEsIGludCBiKSB7CgkJcmV0dXJuIChhPGIpP2E6YjsKCX0KCglzdGF0aWMgdm9pZCBtZXJnZU92ZXJsYXBwaW5nSW50ZXJ2YWxzKEludGVydmFsW10gYXJyKSB7CgkJCgkJaW50IG4gPSBhcnIubGVuZ3RoOwoJCQoJCUFycmF5cy5zb3J0KGFycixuZXcgTXlDb21wYXJhdG9yKCkpOwoJCQoJCWludCBpbmRleCA9IDA7CgkJZm9yKGludCBpPTA7aTxuO2krKykgewoJCQlpZihpbmRleCAhPSAwICYmIGFycltpXS5lbmQgPj0gYXJyW2luZGV4LTFdLnN0YXJ0KSB7CgkJCQl3aGlsZShpbmRleCAhPSAwICYmIGFycltpXS5lbmQgPj0gYXJyW2luZGV4LTFdLnN0YXJ0KSB7CgkJCQkJYXJyW2luZGV4LTFdLnN0YXJ0ID0gIG1pbihhcnJbaW5kZXgtMV0uc3RhcnQsYXJyW2ldLnN0YXJ0KTsKCQkJCQlhcnJbaW5kZXgtMV0uZW5kID0gbWF4KGFycltpbmRleC0xXS5lbmQsYXJyW2ldLmVuZCk7CgkJCQkJaW5kZXgtLTsKCQkJCX0KCQkJfQoJCQllbHNlCgkJCQlhcnJbaW5kZXhdID0gYXJyW2ldOwoJCQlpbmRleCsrOwoJCX0KCQoJCWZvcihpbnQgaT0wO2k8aW5kZXg7aSsrKQoJCQlTeXN0ZW0ub3V0LnByaW50KCJbIiArIGFycltpXS5zdGFydCArICIsICIgKyBhcnJbaV0uZW5kICsgIl0sICIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigpOwkJCgkJCgl9CgkKCXN0YXRpYyB2b2lkIHByaW50QXJyYXkoSW50ZXJ2YWxbXSBhcnIpIHsKCQlmb3IoaW50IGk9MDtpPGFyci5sZW5ndGg7aSsrKQoJCQlTeXN0ZW0ub3V0LnByaW50KCJbIiArIGFycltpXS5zdGFydCArICIsICIgKyBhcnJbaV0uZW5kICsgIl0sICIpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigpOwoJfQoJCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCUludGVydmFsW10gYXJyID0ge25ldyBJbnRlcnZhbCgxLDMpLG5ldyBJbnRlcnZhbCgyLDQpLG5ldyBJbnRlcnZhbCg1LDcpLCBuZXcgSW50ZXJ2YWwoNiw4KX07CgkJCgkJcHJpbnRBcnJheShhcnIpOwoJCQoJCW1lcmdlT3ZlcmxhcHBpbmdJbnRlcnZhbHMoYXJyKTsKCX0KfQ==
[1, 3], [2, 4], [5, 7], [6, 8],
[5, 8], [1, 4],