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

LeetCode:307. 区域和检索 - 数组可修改(树状数组 C++)

目录

307. 区域和检索 - 数组可修改

题目描述:

实现代码与解析:

树状数组:

原理思路:


307. 区域和检索 - 数组可修改

题目描述:

        给你一个数组 nums ,请你完成两类查询。

  1. 其中一类查询要求 更新 数组 nums 下标对应的值
  2. 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的  ,其中 left <= right

实现 NumArray 类:

  • NumArray(int[] nums) 用整数数组 nums 初始化对象
  • void update(int index, int val) 将 nums[index] 的值 更新 为 val
  • int sumRange(int left, int right) 返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的  (即,nums[left] + nums[left + 1], ..., nums[right]

示例 1:

输入:
["NumArray", "sumRange", "update", "sumRange"]
[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
输出:
[null, 9, null, 8]解释:
NumArray numArray = new NumArray([1, 3, 5]);
numArray.sumRange(0, 2); // 返回 1 + 3 + 5 = 9
numArray.update(1, 2);   // nums = [1,2,5]
numArray.sumRange(0, 2); // 返回 1 + 2 + 5 = 8

提示:

  • 1 <= nums.length <= 3 * 104
  • -100 <= nums[i] <= 100
  • 0 <= index < nums.length
  • -100 <= val <= 100
  • 0 <= left <= right < nums.length
  • 调用 update 和 sumRange 方法次数不大于 3 * 104 

实现代码与解析:

树状数组:

class NumArray {
public:vector<int> tr = vector<int>(1000010);int lowbit(int x) {return x & -x;}int query(int x) {int res = 0;for (int i = x; i > 0; i -= lowbit(i)) res += tr[i];return res;}void add(int x, int u) {for (int i = x; i <= n; i += lowbit(i)) tr[i] += u;}vector<int> nums;int n;NumArray(vector<int>& nums) {n = nums.size();this->nums = nums;// 初始化 树状数组tr.resize(n + 1, 0);for (int i = 0; i < n; i++) add(i + 1, nums[i]);}void update(int index, int val) {add(index + 1, val - nums[index]);nums[index] = val;}int sumRange(int left, int right) {return query(right + 1) - query(left);}
};

原理思路:

        如果没有更新,用前缀和就行,但是此题数组会改变,如果每次都求一次前缀和一定超时,所以考虑用树状数组。

        树状数组代码十分好写和简单,背下来就可以,其具体原理可以自行查阅,理解起来还是挺难的。

相关文章:

LeetCode:307. 区域和检索 - 数组可修改(树状数组 C++)

目录 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 实现代码与解析&#xff1a; 树状数组&#xff1a; 原理思路&#xff1a; 307. 区域和检索 - 数组可修改 题目描述&#xff1a; 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组…...

909-2015-T3

文章目录 1.原题2.算法思想2.1.求树的高度2.2.求路径 3.关键代码4.完整代码5.输出结果 1.原题 试编写算法&#xff0c;求给定二叉树上从根节点到叶子节点的一条路径长度等于树的深度减一的路径&#xff08;即列出从根节点到该叶子节点的节点序列&#xff09;&#xff0c;若这样…...

【云原生】初识 Service Mesh

目录 一、什么是Service Mesh 二、微服务发展历程 2.1 微服务架构演进历史 2.1.1 单体架构 2.1.2 SOA阶段 2.1.3 微服务阶段 2.2 微服务治理中的问题 2.2.1 技术栈庞杂 2.2.2 版本升级碎片化 2.2.3 侵入性强 2.2.4 中间件多&#xff0c;学习成本高 2.2.5 服务治理功…...

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时&#xff0c;出现连接异常或连接重置错误&#xff1f; 答案&#xff1a;连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法&#xff1a; 确定服务器的…...

深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…...

羊大师教你如何有效解决工作中的挑战与压力?

在现代社会&#xff0c;工作问题一直是许多人头疼的难题。无论是从工作压力到职业发展&#xff0c;工作问题不仅会影响个人的心理健康&#xff0c;还可能对整个工作团队的效率和和谐产生负面影响。因此&#xff0c;如何有效解决工作问题成为了每个职场人士都需要面对的挑战。 …...

【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、稳定性测试TPS…...

人工智能的时代---AI的影响

人工智能&#xff08;AI&#xff09;是当前科技领域的一个热门话题&#xff0c;它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶&#xff0c;从智能医疗到智能金融&#xff0c;人工智能正在渗透到我们生活的方方面面。在这篇文章中&#xff0c;我…...

LeetCode 每日一题 2023/11/13-2023/11/19

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/13 307. 区域和检索 - 数组可修改11/14 1334. 阈值距离内邻居最少的城市11/15 2656. K 个元素的最大和11/16 2760. 最长奇偶子数组11/17 2736. 最大和查询11/18 2342. 数…...

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…...

vue中原生H5拖拽排序_拖拽图片也是同样的道理

原文地址【vue中原生H5拖拽排序_拖拽图片也是同样的道理】 H5有基于拖拽的事件机制&#xff0c;如果你还不熟悉&#xff0c;请看我之前的文章【拖拽上传】中有介绍。 原生拖拽API实现 由于比较简单直接上代码了&#xff1a; <!DOCTYPE html> <html lang"en&qu…...

【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳

整体计算方法 在编写该代码的过程中寻找了多篇博文和论文&#xff0c;综合所有文章且按网上的以0时的方位角的0&#xff0c;且随时间累加累加至360度。我修改了博文和论文的一些角度的计算方法。得到一下代码与网站计算的方位角相互验证过&#xff0c;误差不超过1 验证网站 太…...

创建git仓库

①git init&#xff1a;用于在一个现有的目录中初始化一个新的 Git 仓库。 # 进入你的项目目录&#xff0c;如果你想要在当前目录下初始化 Git 仓库。 git init 这会在当前目录下创建一个名为 .git 的子目录&#xff0c;其中包含 Git 仓库的所有必要文件和目录。&#xff08;…...

19.悲观锁与乐观锁解析

1.悲观锁 悲观锁比较悲观&#xff0c;它认为如果不锁住这个资源&#xff0c;别的线程就会来争抢&#xff0c;就会造成数据结果错误&#xff0c;所以悲观锁为了确保结果的正确性&#xff0c;会在每次获取并修改数据时&#xff0c;都把数据锁住&#xff0c;让其他线程无法访问该…...

C语言--给出一个点的坐标判断它在单位圆的内部外部还是上面

一.题目描述 给出一个点的坐标判断它在单位圆的内部外部还是上面 例如输入1&#xff0c;0&#xff0c;输出在圆上 二.思路分析 首先&#xff0c;单位圆是以坐标系原点为圆心、半径为1的圆。 给定一个点坐标 (x,y)&#xff0c;我们可以使用勾股定理计算该点到坐标系原点的距…...

变频器基础问答集21-50

21&#xff0e;请问电机软起动器是否能节能?软启动节能效果有限&#xff0c;但可以减少启动对电网的冲击&#xff0c;也可以实现平滑启动&#xff0c;保护电机机组。 根据能量守恒理论,由于加入了相对复杂的控制电路,软启动不但不节能,还会加大能量的消耗,但它可以减小电路的启…...

OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建

目录 一、OpenCV 二、OpenCvSharp 三、OpenCvSharp开发环境搭建 四、下载 五、其他 一、OpenCV OpenCV是基于Apache2.0许可&#xff08;开源&#xff09;发行的跨平台计算机视觉和机器学习函数库&#xff0c;支持Windows、Linux、Android和Mac OS操作系统。OpenCV由一系…...

OSG文字-渐变文字(4)

渐变文字(osgText::FadeText类)继承自osgText::Text类继承关系图如图9-6所示 图9-6 osgText::FadeText的继承关系图 从继承关系图中可以看出&#xff0c;它继承自osgText::Text类&#xff0c;因此&#xff0c;它具备一般文字属性的设置方法这里不再重复说明。创建渐变文字与一般…...

排查生产环境:MySQLTransactionRollbackException数据库死锁

一. 问题现状 程序直接宕机&#xff0c;并在error.log日志中发现大量的报错日志&#xff0c;如下&#xff1a; ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting trans…...

140.【鸿蒙OS开发-01】

鸿蒙开发 (一)、初识鸿蒙1.初识鸿蒙(1).移动通讯技术的发展(2).完整的鸿蒙开发 (二)、鸿蒙系统介绍1.鸿蒙系统的官方定义(1).鸿蒙操作系统概述(2).鸿蒙的生态 2.鸿蒙系统的特点3.鸿蒙和安卓的对比4.鸿蒙开发的发展前景 (三)、鸿蒙开发准备工作1.鸿蒙OS的完整开发流程2.注册并实…...

本地代码智能引擎CIE:基于MCP协议为AI助手注入语义理解能力

1. 项目概述&#xff1a;为AI智能体注入“代码理解力”的本地引擎如果你和我一样&#xff0c;每天都要在动辄数万、甚至数十万行代码的仓库里穿梭&#xff0c;只为找到一个特定功能的实现&#xff0c;或者理清某个函数错综复杂的调用链路&#xff0c;那你一定明白那种“大海捞针…...

Fish Shell技能管理框架:构建可复用命令行工具生态

1. 项目概述&#xff1a;一个为命令行注入灵魂的“技能商店”如果你是一个长期与终端&#xff08;Terminal&#xff09;或命令行界面&#xff08;CLI&#xff09;打交道的人&#xff0c;无论是开发者、运维工程师还是技术爱好者&#xff0c;你肯定有过这样的体验&#xff1a;每…...

缠论可视化终极指南:如何在通达信中快速部署免费分析插件

缠论可视化终极指南&#xff1a;如何在通达信中快速部署免费分析插件 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 对于每一个学习缠论的技术分析爱好者来说&#xff0c;最大的挑战莫过于如何将抽象的…...

NBTExplorer终极指南:如何快速掌握Minecraft数据可视化编辑工具

NBTExplorer终极指南&#xff1a;如何快速掌握Minecraft数据可视化编辑工具 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer NBTExplorer是一款强大的开源图形化NBT…...

1901~2024年各省市区县乡镇月度最低温、最高温、平均气温面板数据

各省市区县乡镇月度最低温、最高温、平均气温面板数据1901&#xff5e;2024 「国家青藏高原数据中心」提供了 1901&#xff5e;2024 年中国逐月平均温度、最高温度、最低温度数据&#xff0c;三份数据均为 NETCDF 格式的栅格数据&#xff0c;空间分辨率为 1km1km。 经过栅格数…...

深入/dev/xdma*:手把手教你用XDMA驱动工具链(reg_rw, dma_to/from_device)进行FPGA数据读写调试

深入解析XDMA驱动工具链&#xff1a;FPGA数据交互实战指南 在FPGA与主机系统的高速数据交互场景中&#xff0c;Xilinx的XDMA&#xff08;PCI Express DMA&#xff09;解决方案凭借其高性能和灵活性成为众多工程师的首选。本文将带您深入探索/dev/xdma*设备节点的奥秘&#xff0…...

终极像素艺术CSS响应式设计:如何在不同设备上完美展示像素艺术

终极像素艺术CSS响应式设计&#xff1a;如何在不同设备上完美展示像素艺术 【免费下载链接】pixel-art-react Pixel art animation and drawing web app powered by React 项目地址: https://gitcode.com/gh_mirrors/pi/pixel-art-react GitHub 加速计划 / pi / pixel-a…...

MCP 2026智能告警配置到底要不要启用Anomaly Baseline?3组A/B测试数据告诉你真实MTTD下降47%的关键条件

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026智能告警配置到底要不要启用Anomaly Baseline&#xff1f;3组A/B测试数据告诉你真实MTTD下降47%的关键条件 Anomaly Baseline 并非“开即有效”的通用开关——其价值高度依赖于指标的周期稳定性…...

Dayflow:基于纯文本与本地优先理念的个人时间管理与量化分析工具

1. 项目概述与核心价值最近在整理个人时间管理方案时&#xff0c;发现了一个非常有意思的开源项目——Dayflow。这并非一个全新的概念&#xff0c;市面上有无数的时间追踪和日记应用&#xff0c;但Dayflow的独特之处在于&#xff0c;它完全拥抱了“纯文本”和“本地优先”的哲学…...

具身智能课程整体总结

具身智能课程1. CS188&#xff08;快速过渡期&#xff09;2. 承上启下的基础设施&#xff1a;CS231N 与 CS2293. 跨越鸿沟的关键点&#xff1a;CS285&#xff08;强化学习&#xff09;4. 终极挑战&#xff1a;底层物理与灵巧手操作&#xff08;最底层&#xff09;一、课程体系总…...