当前位置: 首页 > news >正文

C++ | Leetcode C++题解之第327题区间和的个数

题目:

题解:

class Solution {
public:int countRangeSumRecursive(vector<long>& sum, int lower, int upper, int left, int right) {if (left == right) {return 0;} else {int mid = (left + right) / 2;int n1 = countRangeSumRecursive(sum, lower, upper, left, mid);int n2 = countRangeSumRecursive(sum, lower, upper, mid + 1, right);int ret = n1 + n2;// 首先统计下标对的数量int i = left;int l = mid + 1;int r = mid + 1;while (i <= mid) {while (l <= right && sum[l] - sum[i] < lower) l++;while (r <= right && sum[r] - sum[i] <= upper) r++;ret += (r - l);i++;}// 随后合并两个排序数组vector<long> sorted(right - left + 1);int p1 = left, p2 = mid + 1;int p = 0;while (p1 <= mid || p2 <= right) {if (p1 > mid) {sorted[p++] = sum[p2++];} else if (p2 > right) {sorted[p++] = sum[p1++];} else {if (sum[p1] < sum[p2]) {sorted[p++] = sum[p1++];} else {sorted[p++] = sum[p2++];}}}for (int i = 0; i < sorted.size(); i++) {sum[left + i] = sorted[i];}return ret;}}int countRangeSum(vector<int>& nums, int lower, int upper) {long s = 0;vector<long> sum{0};for(auto& v: nums) {s += v;sum.push_back(s);}return countRangeSumRecursive(sum, lower, upper, 0, sum.size() - 1);}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 编程-笔记三:行为型设计模式-小结
  • 字符函数和字符串函数(2),C语言内存函数
  • JavaScript中的Truthy Falsy值以及等号判断
  • vue3中props无法watch
  • Midjourney入门-提示词基础撰写与公式
  • 01.小迪笔记2024 - day01-Web应用架构搭建站库分离路由访问配置受限DNS解析(不定期更新)
  • 中国第一台B超是在哪里产的?以及多普勒超声和B超、A超的区别
  • 如何选择适合的香港云服务器提供商?
  • 嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)
  • AI学习指南深度学习篇-卷积神经网络(CNN)简介
  • unity自动添加头部注释脚本
  • 机器学习——支持向量机(SVM)(1)
  • 用Manim创建条形图【BarChart】
  • IPSec之数据封装协议
  • 【practise】逆波兰表达式求值
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • chrome扩展demo1-小时钟
  • es6--symbol
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Making An Indicator With Pure CSS
  • MQ框架的比较
  • oldjun 检测网站的经验
  • vuex 学习笔记 01
  • vue自定义指令实现v-tap插件
  • windows-nginx-https-本地配置
  • 数据可视化之 Sankey 桑基图的实现
  • 一份游戏开发学习路线
  • 一个SAP顾问在美国的这些年
  • 06-01 点餐小程序前台界面搭建
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​数据链路层——流量控制可靠传输机制 ​
  • #DBA杂记1
  • #if #elif #endif
  • #pragma once
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二) 初入MySQL 【数据库管理】
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)基于IDEA的JAVA基础12
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • **PHP二维数组遍历时同时赋值
  • .net 7 上传文件踩坑
  • .NET C# 使用 iText 生成PDF
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net 托管代码与非托管代码
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • ??javascript里的变量问题
  • @RequestParam,@RequestBody和@PathVariable 区别
  • []Telit UC864E 拨号上网
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [52PJ] Java面向对象笔记(转自52 1510988116)