package 番外篇2024;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
public class 区间交叠问题 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
int[][] k = new int[n][];
for (int i = 0; i < n; i++) {
k[i] = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
}
Arrays.sort(k, (a, b) -> a[0] - b[0]);
Stack<int[]> stack = new Stack<>();
stack.push(k[0]);
for (int i = 0; i < n; i++) {
while (true) {
if (stack.isEmpty()) {
stack.push(new int[] { k[i][0], k[i][1] });
break;
}
int[] temp = stack.peek();
int left = temp[0];
int right = temp[1];
int left_ = k[i][0];
int right_ = k[i][1];
if (left_ <= left) {
if (right_ <= right) {
break;
} else {
// stack.push(new int[] { right, right_ });
// break;
stack.pop();
}
} else if (left_ <= right) {
if (right_ <= right) {
break;
} else {
stack.push(new int[] { right, right_ });
break;
}
} else {
stack.push(new int[] { left_, right_ });
break;
}
}
}
System.out.println(stack.size());
}
}
华为机试:区间交叠问题
于 2024-03-11 19:49:26 首次发布
这篇文章描述了一个使用Java编程语言解决区间交叠问题的方法,通过Scanner读取输入,利用Stack数据结构对区间进行合并,最终输出交叠区间的数量。
摘要由CSDN通过智能技术生成