思路:将所有圆的左右端点存入集中,然后两两去判断是否相交,只要有相交的就返回“y”
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while (T-- > 0) {
// 端点数
int n = in.nextInt();
int[] arr = new int[n];
// 输入端点
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
// 使用集合来保存圆,再去判断是否相交,如果是,则返回F
List<int[]> cir = new ArrayList<>();
// 存储圆
for (int i = 0; i < n - 1; i++) {
// 左
int left = Math.min(arr[i], arr[i + 1]);
// 右
int right = Math.max(arr[i], arr[i + 1]);
cir.add(new int[] {left, right});
}
// 判断是否相交
boolean flag = false;
for (int i = 1; i < cir.size(); i++) {
for (int j = 0; j < i; j++) {
// 设置两个圆的端点
int left1 = cir.get(i)[0], right1 = cir.get(i)[1];
int left2 = cir.get(j)[0], right2 = cir.get(j)[1];
// 两个圆相交的情况
if (left1 < left2 && right1 < right2 && right1 > left2) {
flag = true;
break;
} else if (left1 > left2 && left1 < right2 && right1 > right2) {
flag = true;
break;
}
}
}
if (flag) {
System.out.println("y");
} else {
System.out.println("n");
}
}
}
}

京公网安备 11010502036488号