当前位置:网站首页>力扣练习——40 区间和的个数
力扣练习——40 区间和的个数
2022-08-02 04:18:00 【qq_43403657】
40 区间和的个数
1.问题描述
给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。
区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。
说明:
最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。
示例:
输入: nums = [-2,5,-1], lower = -2, upper = 2,
输出: 3
解释: 3个区间分别是: [0,0], [2,2], [0,2],它们表示的和分别为: -2, -1, 2。
可使用以下main函数:
int main()
{
vector<int> nums;
int n,data,lower,upper;
cin>>n;
for(int j=0; j<n; j++)
{
cin>>data;
nums.push_back(data);
}
cin>>lower>>upper;
int res=Solution().countRangeSum(nums,lower,upper);
cout<<res<<endl;
return 0;
}
2.输入说明
首先输入nums数组的长度n,
然后输入n个整数,以空格分隔。
最后输入两个整数lower和upper。
1<=n<=10000
3.输出说明
输出一个整数
4.范例
输入
3
-2 5 -1
-2 2
输出
3
5.代码
#include <iostream>
#include <queue>
#include <cstdlib>
#include <cstring>
#include<set>
using namespace std;
int countRangeSum(vector<int>nums, int lower, int upper)
{
//参考题解:https://leetcode.cn/problems/count-of-range-sum/solution/327qu-jian-he-de-ge-shu-ti-jie-zong-he-by-xu-yuan-/
int len = nums.size();//数组长度
int presum = 0;//前缀和
multiset<int> S;//平衡树
S.insert(0);
int res = 0;//结果
for (int i = 0; i < len; i++) {
presum += nums[i];
//lower_bound返回数值第一个出现的位置
//upper_bound返回的是最后一个大于等于val的位置,也是有一个新元素val进来时的插入位置
res += distance(S.lower_bound(presum - upper), S.upper_bound(presum - lower));
//distance()计算两个迭代器表示的范围内包含元素的个数
S.insert(presum);
}
return res;
}
int main()
{
vector<int> nums;
int n, data, lower, upper;
cin >> n;
for (int j = 0; j < n; j++)
{
cin >> data;
nums.push_back(data);
}
cin >> lower >> upper;
int res = countRangeSum(nums, lower, upper);
cout << res << endl;
return 0;
}
边栏推荐
猜你喜欢
随机推荐
关于地图GIS的一次实践整理(下) Redis的GIS实践
无主复制系统(1)-节点故障时写DB
【Interview】Recruitment requirements
数学建模学习(76):多目标线性规划模型(理想法、线性加权法、最大最小法),模型敏感性分析
【每日一题】1374. 生成每种字符都是奇数个的字符串
ROS visualization of 3D target detection
Excel skills daquan
Deep blue college - handwritten VIO operations - the first chapter
1318_将ST link刷成jlink
什么是接触电流怎么测?
Line generation 005
(一)代码输出题 —— reverse
“数字化重构系统,搞定 CEO 是第一步”
CaDDN code debugging
Research Notes (6) Indoor Path Planning Method Based on Environment Perception
Batch normalization (BN) based on deep learning
数据复制系统设计(2)-同步复制与异步复制
micro-ros arduino esp32 ros2 笔记
【FreeRTOS】12 任务通知——更省资源的同步方式
爬虫_爬取wasde月度供需平衡表(实例)








