如果是数据量小的话可以直接用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);
}
}



京公网安备 11010502036488号