
模板
void merge(vector<PII> &segs)
{
vector<PII> res;
sort(segs.begin(), segs.end());
int st = -2e9, ed = -2e9;
for (auto seg : segs)
if (ed < seg.first)
{
if (st != -2e9) res.push_back({st, ed});
st = seg.first, ed = seg.second;
}
else ed = max(ed, seg.second);
if (st != -2e9) res.push_back({st, ed});
segs = res;
}
public static class PII implements Comparable<PII> {
int first;
int second;
public PII(int first, int second) {
this.first = first;
this.second = second;
}
@Override
public int compareTo(PII o) {
return Integer.compare(first, o.first);
}
}
public static void merge() {
List<PII> res = new ArrayList<>();
Collections.sort(segs);
int st = (int) -2e9;
int ed = (int) -2e9;
for (PII seg : segs) {
if (ed < seg.first) {
if (ed != (int) -2e9) {
res.add(new PII(st, ed));
}
st = seg.first;
ed = seg.second;
} else {
ed = ed > seg.second ? ed : seg.second;
}
}
if (st != (int) -2e9) {
res.add(new PII(st, ed));
}
segs = res;
}
练习
01 区间合并

import java.io.*;
import java.util.*;
public class Main {
public static int n;
public static List<PII> segs = new ArrayList<>();
public static class PII implements Comparable<PII> {
int first;
int second;
public PII(int first, int second) {
this.first = first;
this.second = second;
}
@Override
public int compareTo(PII o) {
return Integer.compare(first, o.first);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String[] str1 = br.readLine().split(" ");
segs.add(new PII(Integer.parseInt(str1[0]), Integer.parseInt(str1[1])));
}
merge();
pw.println(segs.size());
pw.close();
br.close();
}
public static void merge() {
List<PII> res = new ArrayList<>();
Collections.sort(segs);
int st = (int) -2e9;
int ed = (int) -2e9;
for (PII seg : segs) {
if (ed < seg.first) {
if (ed != (int) -2e9) {
res.add(new PII(st, ed));
}
st = seg.first;
ed = seg.second;
} else {
ed = ed > seg.second ? ed : seg.second;
}
}
if (st != (int) -2e9) {
res.add(new PII(st, ed));
}
segs = res;
}
}