题解 | 植树节

植树节

https://www.nowcoder.com/practice/bf18f4e68f614b35a7a6c56c743d82fc

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

	}

}

全部评论

相关推荐

04-03 09:32
已编辑
华南农业大学 golang
我的代码出BUG了:"晚点发个邮件调整一下时间",你收到新的邮件没,如果没有收到新的邮件,那就需要进入面试链接留痕,否则系统会判定你迟到
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务