当前位置:网站首页>力扣练习——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;
}
边栏推荐
猜你喜欢

Camtasia 2022简体中文版屏幕录像和视频编辑软件

复制延迟案例(2)-读己之写

C - The Domino Effect(dfs+回溯)

Jetson Nano 2GB Developer Kit Installation Instructions

1318_将ST link刷成jlink

Deep Blue Academy - Visual SLAM Lecture Fourteen - Chapter 5 Homework

Pycharm platform import scikit-learn

数据可视化之百变柱状图

直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人

无主复制系统(1)-节点故障时写DB
随机推荐
Andrew Ng's Machine Learning Series Course Notes - Chapter 18: Application Example: Image Text Recognition (Application Example: Photo OCR)
线代005
alibaba数据同步组件canal的实践整理
STM32 OLED显示屏--SPI通信知识汇总
康威定律对于系统架构很重要吗?
PyQt5_pyqtgraph鼠标在折线图上画方形
UI自动化测试框架搭建——标记性能较差用例
2022 Huawei Software Elite Challenge (Preliminary) - Summary
Deep Blue Academy-Visual SLAM Lecture 14-Chapter 6 Homework
多主复制的适用场景(1)-多IDC
自定义一个下划线分词器
How to save a section of pages in a PDF as a new PDF file
关于地图GIS开发事项的一次实践整理(上)
开放原子开源峰会落幕,百度超级链牵头成立XuperCore开源工作组
高等数学(第七版)同济大学 总习题三(后10题) 个人解答
MySQL read-write separation mysql-proxy deployment
违约金过高”的认定依据
力扣 215. 数组中的第K个最大元素
Unreal回放系统剖析(上)
【Interview】Recruitment requirements