803.區間合併
阿新 • • 發佈:2020-10-09
給定 n 個區間 [li,ri],要求合併所有有交集的區間。
注意如果在端點處相交,也算有交集。
輸出合併完成後的區間個數。
例如:[1,3]和[2,6]可以合併為一個區間[1,6]。
輸入格式
第一行包含整數n。
接下來n行,每行包含兩個整數 l 和 r。
輸出格式
共一行,包含一個整數,表示合併區間完成後的區間個數。
資料範圍
1≤n≤100000,
−109≤li≤ri≤109
輸入樣例:
5
1 2
2 4
5 6
7 8
7 9
輸出樣例:
3
參考程式碼
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] segs = new int[n][2]; for (int i = 0; i < n; i++) { segs[i][0] = sc.nextInt(); segs[i][1] = sc.nextInt(); } Arrays.sort(segs, new Comparator<int[]>() { public int compare(int[] o1, int[] o2) { return o1[0] - o2[0]; } }); int res = 0; int st = Integer.MIN_VALUE, ed = Integer.MIN_VALUE; for (int i = 0; i < n; i++) { if (ed < segs[i][0]) { st = segs[i][0]; ed = segs[i][1]; res++; } else { ed = Math.max(ed, segs[i][1]); } } System.out.println(res); sc.close(); } }