java求助最后一个测试点,对拍无数次没有问题,不知道为啥
查看原帖
java求助最后一个测试点,对拍无数次没有问题,不知道为啥
1032894
jiangce楼主2024/5/7 14:05

大佬们 help

import java.util.Scanner;
import java.util.Collections;
import java.util.LinkedList;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		LinkedList<Integer> arr = new LinkedList<Integer>();
		int c = n;
		while (c-- != 0) {
			int op = scan.nextInt();
			int x = scan.nextInt();
			//binarySearch能够查找指定的x并返回其下标,如果没找到,则返回第一个比他大的
			//数是第几个数(从1开始)并且乘上-1
			int inx = Collections.binarySearch(arr, x);
			if (op == 1) {
				if (inx < 0) {
					//以前不存在
					inx = -inx;
					System.out.println(inx);
				} else {
					System.out.println(inx + 1);
				}
			} else if (op == 2) {
				System.out.println(arr.get(x - 1));
			} else if (op == 3) {
				if (inx >= 0) {
					if (inx == 0) {
						//没有前驱
						System.out.println("−2147483647");
					} else {
						System.out.println(arr.get(inx - 1));
					}
				} else {
					inx = -inx;
					if (inx == 1) {
						//没有前驱
						System.out.println("-2147483647");

					} else {
						System.out.println(arr.get(inx - 2));
					}
				}
			} else if (op == 4) {
				if (inx >= 0) {
					if (inx == arr.size() - 1) {
						//没有后继
						System.out.println("2147483647");
					} else {
						System.out.println(arr.get(inx + 1));

					}
				} else {
					inx = -inx;
					if (inx >= arr.size() + 1) {
						//没有后继
						System.out.println("2147483647");
					} else {
						System.out.println(arr.get(inx - 1));
					}
				}
			} else {
				if (inx < 0) {
					inx = -inx;
					arr.add(inx - 1, x);
				}
			}

		}
		scan.close();
	}
}
2024/5/7 14:05
加载中...