文章目录
- 1. 题目
- 2. 解题
1. 题目
链接:https://ac.nowcoder.com/acm/contest/10323/A
来源:牛客网
牛牛现在在花园养了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<int>& l, vector<int>& r) {// write code herevector<int> h(n+2 , 0);for(int i = 0; i < m; ++i){h[l[i]]++; // 左端点++h[r[i]+1]--; // 右端点+1 的位置 --}vector<int> 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博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!