Leetcode 327. 区间和的个数

1.题目基本信息

1.1.题目描述

给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 。

区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。

1.2.题目地址

https://leetcode.cn/problems/count-of-range-sum/description/

2.解题方法

2.1.解题思路

归并排序。求nums的前缀和数组,并对前缀和数组使用归并排序算法进行排序,在排序过程的归并之前,使用双指针算出rarr[j]-larr[i]在[lower,upper]区间的(i,j)的组合对数,并使用全局变量进行统计总对数,即为题解

3.解题代码

python代码

class Solution:def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int:# 思路1:归并排序。求nums的前缀和数组,并对前缀和数组使用归并排序算法进行排序,在排序过程的归并之前,使用双指针算出rarr[j]-larr[i]在[lower,upper]区间的(i,j)的组合对数,并使用全局变量进行统计总对数,即为题解n = len(nums)preSums = [0] * (n + 1)for i in range(n):preSums[i + 1] = preSums[i] + nums[i]self.lower = lowerself.upper = upperself.result = 0self.mergeSort(preSums, 0, n)# print(preSums)# print(self.result)return self.resultdef mergeSort(self, nums:list[int], left:int, right:int):# 第一步,递归将左右两侧进行排序if left >= right:return mid = (right - left) // 2 + leftself.mergeSort(nums, left, mid)self.mergeSort(nums, mid + 1, right)larr = nums[left:mid + 1]rarr = nums[mid + 1:right + 1]# 第二步,找到larr和rarr能够构成的合法情况的对数i, j1, j2 = 0, 0, 0while i < mid + 1 - left:while j1 < right - mid and rarr[j1] < larr[i] + self.lower:j1 += 1while j2 < right - mid and rarr[j2] <= larr[i] + self.upper:j2 += 1self.result += j2 - j1i += 1# 第三步,merge已经排序的部分i, j, k = 0, 0, leftwhile i < mid + 1 - left and j < right - mid:if larr[i] < rarr[j]:nums[k] = larr[i]i += 1k += 1else:nums[k] = rarr[j]j += 1k += 1while i < mid + 1 - left:nums[k] = larr[i]i += 1k += 1while j < right - mid:nums[k] = rarr[j]j += 1k += 1

4.执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92691.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MinIO 版本管理实践指南(附完整 Go 示例)

✨ 前言 在构建企业级对象存储系统时,“对象的版本管理”是一个关键特性。MinIO 作为一款高性能、Kubernetes 原生的 S3 兼容对象存储系统,也支持强大的版本控制功能。 本文将通过 Go 示例代码 + 实操讲解 的形式,手把手带你掌握 MinIO 的版本控制能力,包括开启版本控制、…

数组toString方法及类型检测修复方案

在 JavaScript 中&#xff0c;数组的 toString() 方法被覆盖&#xff08;重写&#xff09;为返回数组元素的逗号分隔字符串&#xff0c;而不是原始的 [object Array] 类型标识。以下是详细解释和修复方案&#xff1a;问题原因Array.prototype.toString 被覆盖数组继承自 Object…

mysql索引底层B+树

B树胜出的关键特性&#xff1a;矮胖树结构&#xff1a;3-4层高度即可存储2000万条记录&#xff08;假设每页存1000条&#xff09; 叶子链表&#xff1a;所有数据存储在叶子节点&#xff0c;并通过双向链表连接 非叶导航&#xff1a;非叶子节点仅存储键值&#xff0c;不保存数据…

AI开放课堂:钉钉MCP开发实战

我们正处在AI技术爆发的时代&#xff0c;也处于企业数字化蓬勃发展的时代。如何利用AI技术&#xff0c;突破模型自身知识的局限&#xff0c;安全、高效地与外部世界连接和交互&#xff0c;是当前所有AI开发者在企业数字化中面临的问题之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一键模型部署,新增支持百度开源大模型ERNIE 4.5 21B

使用过DigitalOcean GPU Droplet 服务器的用户应该对我们的一键模型部署功能不陌生。DigitalOcean 的一键模型部署 (1-Click Models) 功能是 DO 为开发者和企业提供的一种便捷方式&#xff0c;用于快速部署和运行预训练的生成式 AI 模型&#xff0c;尤其是大型语言模型 (LLM)。…

【嵌入式面试】嵌入式笔试与面试宝典(offer必来)

&#x1f48c; 所属专栏&#xff1a;【嵌入式面试】 &#x1f600; 作  者&#xff1a;兰舟比特 &#x1f43e; &#x1f680; 个人简介&#xff1a;热爱开源系统与嵌入式技术&#xff0c;专注 Linux、网络通信、编程技巧、面试总结与软件工具分享&#xff0c;持续输出实用干…

企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构

引言&#xff1a;数字化转型中数据协同困境与系统融合挑战 在数字化转型实践中&#xff0c;企业普遍面临数据系统与业务运营的协同困境&#xff0c;主要表现为数据处理平台与核心业务流程的架构隔离、分析成果与决策闭环的价值断层、以及双重数据维护带来的资源损耗。这种系统…

openbmc 日志系统继续分析

1.说明 1.1 总体说明 本节是继: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的继续分析的文档。 该篇内容主要目的是分析整个openbmc的日志系统。 注意解读文档: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它进行bug管理】

JIRA小白如何使用它进行bug管理 提示&#xff1a;入职一般来说&#xff0c;公司会提供账号&#xff0c;不需要部署如何提bug&#xff1a; JIRA有两种提交方式 在执行测试用例中在bug管理项目中新建提bug建议或者注意事项&#xff1a; 标题&#xff1a;执行完A之后&#xff0c;发…

陪诊小程序系统开发:开启医疗陪护新时代

在快节奏的现代生活中&#xff0c;人们面临着各种各样的压力&#xff0c;健康问题也日益凸显。当生病就医时&#xff0c;尤其是对于老年人、孕妇、残障人士等特殊群体&#xff0c;独自前往医院往往会遇到诸多困难&#xff0c;如不熟悉医院流程、行动不便、心理上感到孤独无助等…

Leetcode—1035. 不相交的线【中等】

2025每日刷题&#xff08;214&#xff09; Leetcode—1035. 不相交的线最长公共子序列长度&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09; 给定两个序列&#xff08;如字符串或数组&#xff09;&#xff0c;最长公共子序列&#xff08;LCS&#xff09;是同…

使用 Conda 工具链创建 UV 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》

Python 多版本环境治理理念驱动的系统架构设计&#xff1a;三维治理、四级隔离、五项自治 原则-CSDN博客 Python 多版本与开发环境治理架构设计-CSDN博客 【终极实战】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具协同 AnacondaPyCharm&#xff1a;构建 Python 全版本栈隔离…

一文通透mamba2「力证Transformer are SSM」:从SSM、半可分矩阵、SMA、SSD到mamba2

前言 实话说&#xff0c;过去一两月一直忙着我司两大类项目的推进 一类是正在逐一上线基于大模型的论文翻译、论文审稿、论文对话、论文修订/润色、论文idea提炼等等(截止到24年8月底&#xff0c;其中的审稿和翻译已上线七月官网 )一类是正在抓紧做面向一个个工厂的具身智能机…

【Java基础06】ArrayList

文章目录1.ArrayList1.1 集合的基本使用1.2 集合的创建和成员方法1.3 练习一&#xff1a;集合的遍历基本数据类型对应的包装类1.4 练习二&#xff1a;使用集合存储并遍历学生对象1.4 练习三&#xff1a;添加用户对象并判断是否存在写方法要思考的步骤1.5 练习四&#xff1a;添加…

ddos 放在多个云主机,同时运行

1. 起因&#xff0c; 目的: 我打开 grok, 被 cloudflare 拦截&#xff0c;问我是不是机器人。 这个情况&#xff0c;如果是别的小网站也就算了&#xff0c;很正常。 大公司也搞这种东西&#xff0c;要么是偷懒&#xff0c;要么是太小气了。 一气之下&#xff0c;我决定写个 ddo…

lspci/setpci用法小结

目录 1.lspci用法小结 2.lspci -t 3.setpci用法小结 1.lspci用法小结 参考博客&#xff1a;【PCIe】lspci用法小结 - 知乎 lspci是一个用来显示系统中所有PCI总线设备或者连接到该总线上所有设备的工具 man lspci lspci(8) …

光通信从入门到精通:PDH→DWDM→OTN 的超详细演进笔记

光通信从入门到精通&#xff1a;PDH→DWDM→OTN 的超详细演进笔记 作者&#xff1a; 脱脱克克 日期&#xff1a;2025-07-24 关键词&#xff1a;DWDM、OTN、G.709、光纤、带宽、C-band、L-band、DSP、ROADM 摘要 本文用一条“高速公路”的比喻&#xff0c;把 40 年光传输技术演进…

安全初级——网页

网页代码<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户登录</title><script src&…

JVM原理及其机制(二)

目录 一 . 垃圾回收机制&#xff08;GC&#xff09; 二 . 垃圾回收的具体步骤 &#xff08;1&#xff09;先找出谁是垃圾 方案一&#xff1a;引用计数 方案二&#xff1a;可达性分析 &#xff08;2&#xff09;释放垃圾的内存空间 方案一&#xff1a;标记清除 方案二…

Solo:基于 zkHE 的身份验证协议,构建 Web3 可信匿名身份层

“Solo 正在基于其独创的 zkHE 架构&#xff0c;构建一套“可信匿名”的链上身份系统&#xff0c;有望打破长期困扰 Web3 的“不可能三角”&#xff0c;即在隐私保护、身份唯一性与去中心化可验证性之间实现兼得。”前不久&#xff0c;Web3 身份层项目 Solo 宣布完成 120 万美元…