思路实现:
1.利用二维数组来存储输入数据
2.开辟一个包含所有范围的数组用来·做标记初始为0
3.遍历二维数组,取到每段区间的开始位置和结束位置,在标记数字组中将边界点及边界点内置1
4.遍历标记数组记录0的个数,即可
代码实现:
package 天梯.第一周.第三周;import java.util.Scanner;public class Main5 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 总长度int[] ints = new int[n + 1];int m = scanner.nextInt(); // 区间数量int[][] arr = new int[m][2];// 读取区间for (int i = 0; i < m; i++) {arr[i][0] = scanner.nextInt();arr[i][1] = scanner.nextInt();}// 将每个区间的起始和结束位置之间的所有元素都设置为1for (int i = 0; i < m; i++) {int start = arr[i][0];int end = arr[i][1];for (int j = start; j <= end; j++) {ints[j] = 1;}}int count = 0;for (int i = 0; i < ints.length; i++) {if(ints[i] == 0){count++;}}System.out.println(count);
// // 打印结果
// for (int i = 0; i < ints.length; i++) {
// System.out.print(ints[i] + " ");
// }}
}