原题 给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。 区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。 参考
multisetclass Solution {
public:
int countRangeSum(vector& nums, int lower, int upper) {
int n = nums.size();
multiset st;
st.insert(0);
long long sum = 0;
int ans = 0,l,r;
for(auto val:nums) {
sum += val;
ans += distance(st.lower_bound(sum-upper),st.upper_bound(sum-lower));
st.insert(sum);
}
return ans;
}
};
线段树+离散化
class Solution {
public:
int countRangeSum(vector& nums, int lower, int upper) {
int n = nums.size(),pos,a,b;
int ans = 0;
vector h(n+1);
h[0] = 0;
for(int i = 1;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?