当前位置:网站首页>力扣练习——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;
}
边栏推荐
猜你喜欢
UI自动化测试框架搭建——标记性能较差用例
【STM32】ADC采集光敏数据(不看库函数手册进行配置)
ESP32-C5 简介:乐鑫首款双频 Wi-Fi 6 MCU
PDF文件转换格式
直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人
Qt常见问题
OpenPCDet environment configuration of 3 d object detection and demo test
redis基础入门
【C语言程序】求直角三角形边长
张成分析(spanning test):portfolio_analysis.Spanning_test
随机推荐
数学建模学习(76):多目标线性规划模型(理想法、线性加权法、最大最小法),模型敏感性分析
Qt编写物联网管理平台49-设备模拟工具
Nuscenes数据集总结(下)
康威定律对于系统架构很重要吗?
EasyCVR视频广场切换通道,视频播放协议异常的问题修复
关于地图GIS的一次实践整理(下) Redis的GIS实践
Sentinel熔断之非控制台方式总结
【每日一题】1374. 生成每种字符都是奇数个的字符串
吴恩达机器学习系列课程笔记——第七章:正则化(Regularization)
互动投影墙深受展览展示喜爱的原因分析
Deep blue college - handwritten VIO operations - the first chapter
Batch normalization (BN) based on deep learning
什么是接触电流怎么测?
Excel如何解密工作表保护
Reinforcement Learning (Chapter 16 of the Watermelon Book) Mind Map
ADSP21489数据手册表摘要
A Practical Arrangement of Map GIS Development Matters (Part 1)
直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人
区间和 离散化
CODESYS指针型变量编程应用(配方)