如果是数据量小的话可以直接用for循环,在a与b之间都++,但是数据量大不行

我们采用差分数组

c[a]++,c[b+1]--;

最后统计每一棵数的次数并求最大值



import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int c[]=new int[1000005];
		while(n-->0) {
			int a=scanner.nextInt();
			int b=scanner.nextInt();
			c[a]+=1;
			c[b+1]-=1;
			
		}
		int sum=0;
		int max=0;
		for (int i = 0; i < c.length; i++) {
			sum+=c[i];
			if(sum>max)max=sum;
		}
		System.out.println(max);

	}

}