牛客 牛牛浇树(差分)
发布日期:2021-07-01 03:35:05 浏览次数:2 分类:技术文章

本文共 1112 字,大约阅读时间需要 3 分钟。

文章目录

1. 题目

链接:

来源:牛客网

牛牛现在在花园养了n棵树,按顺序从第1棵到第n棵排列着。

牛牛每天会按照心情给其中某一个区间的树浇水。
例如如果某一天浇水的区间为[2,4],就是牛牛在这一天会给第2棵,第3棵和第4棵树浇水。
树被浇水后就会成长,为了简化问题,我们假设在初始时所有树的高度为0cm。
每过去一天树会自然成长1cm,每次树被浇水后当天会额外成长1cm。
m天中牛牛每天都都会选一个区间[l,r]对这个区间内的树进行浇水,牛牛想知道m天后有多少棵树的高度为奇数,你能告诉牛牛吗?

2. 解题

class Solution {
public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 返回m天后高度为奇数的树的数量 * @param n int整型 * @param m int整型 * @param l int整型vector * @param r int整型vector * @return int整型 */ int oddnumber(int n, int m, vector
& l, vector
& r) {
// write code here vector
h(n+2 , 0); for(int i = 0; i < m; ++i) {
h[l[i]]++; // 左端点++ h[r[i]+1]--; // 右端点+1 的位置 -- } vector
ans(n, m);//初始化为自然长高高度 int sum = 0, count = 0; for(int i = 1; i <= n; ++i) {
sum += h[i];//前缀和为浇水长得高度 ans[i-1] += sum; if(ans[i-1]%2)//高度为奇数 count++; } return count; }};

100ms C++


我的CSDN

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

Michael阿明

转载地址:https://michael.blog.csdn.net/article/details/111568065 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:牛客 挑选方案问题(排列组合)
下一篇:LeetCode 1697. 检查边长度限制的路径是否存在(排序+并查集)

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年05月02日 03时39分09秒