【LeetCode:307. 区域和检索 - 数组可修改 | 树状数组 or 线段树】

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • ⚡ 线段树 or 树状数组
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

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

⛲ 题目描述

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

其中一类查询要求 更新 数组 nums 下标对应的值
另一类查询要求返回数组 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

🌟 求解思路&实现代码&运行结果


⚡ 线段树 or 树状数组

🥦 求解思路

参考题解:关于各类「区间和」问题如何选择解决方案(含模板)

🥦 实现代码
class NumArray {int[] tree;int lowbit(int x){return x&-x;}// 查询前缀和的方法int query(int x){int ans=0;for(int i=x;i>0;i-=lowbit(i)) ans+=tree[i];return ans;}// 在树状数组x的位置上增加uvoid add(int x,int u){for(int i=x;i<=n;i+=lowbit(i)) tree[i]+=u;}int[] nums;int n;// 初始化「树状数组」,要默认数组是从 1 开始public NumArray(int[] nums) {this.nums=nums;this.n=nums.length;tree=new int[n+1];for(int i=0;i<n;i++) add(i+1,nums[i]);}public void update(int index, int val) {add(index+1,val-nums[index]);nums[index]=val;}public int sumRange(int left, int right) {return query(right+1)-query(left);}
}/*** Your NumArray object will be instantiated and called as such:* NumArray obj = new NumArray(nums);* obj.update(index,val);* int param_2 = obj.sumRange(left,right);*/
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

阿里云国际站:云备份

文章目录 一、阿里云云备份的概念 二、云备份的优势 三、云备份的功能 四、云备份的应用场景 一、阿里云云备份的概念 云备份作为阿里云统一灾备平台&#xff0c;是一种简单易用、敏捷高效、安全可靠的公共云数据管理服务&#xff0c;可以为阿里云ECS整机、ECS数据库、文件…

马达加斯加市场开发攻略,收藏一篇就够了

马达加斯加是位于非洲南部一个国家&#xff0c;虽然经济是比较落后的一个国家&#xff0c;但是一直以来跟中国的关系都还不错&#xff0c;生产生活资料也是比较依赖进口的&#xff0c;市场潜力还是不错的。今天就来给大家分享一下马达加斯加的相关攻略。大家点赞收藏关注慢慢看…

如何成功创建百度百科词条?教你从零开始创建自己的百度百科【建议收藏】

百度百科是一个开放的网络百科全书&#xff0c;用户可以自由编辑和贡献内容。如果你想创建一个百度百科页面&#xff0c;需要做好以下准备&#xff1a; 1.确定主题&#xff1a;选择一个你熟悉或者感兴趣的主题&#xff0c;确保该主题在百度百科上还没有相关的页面。 2.收集资…

邦芒攻略:求职前先要明确自己的职业定位

求职前先要明确自己的职业定位&#xff0c;生活中&#xff0c;许多人在求职的时候&#xff0c;还是对自己的想要找的职位犹豫不决&#xff0c;想要找到符合自己的职位&#xff0c;下面是求职前先学会定位你想要的职业内容&#xff01; ​ ​一、心理因素理想职业之基础 性格…

7天入门python系列之第六天python面向对象编程

第六天主要是学习Python的面向对象编程 编者打算开一个python 初学主题的系列文章&#xff0c;用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python&#xff0c;这是一个紧凑的学习计划。但并不是不可完成的。第六天开始面向对象…

【Linux】Centos7 shell实现MySQL5.7 tar 一键安装

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

数据可视化新秀 DataEase 可否替代 Tableau?

每年数以千计的企业在数据可视化工具中选择 Tableau&#xff0c;但是你知道还有一款强大的工具DataEase&#xff0c;可能会成为你的更佳选择吗&#xff1f;下面是 Tableau 与 DataEase 的功能对比&#xff1a; 1 功能对比 Tableau DataEase 安装包支持平台 Windows MacOS Li…

3D虚拟情景实训教学系统在陪同口译课堂中的应用

一、虚拟情景实训教学系统的作用 1. 高度仿真的场景&#xff1a;虚拟情景实训教学系统可以模拟各种真实的口译场景&#xff0c;如商务谈判、会议讨论、文化交流等&#xff0c;让学生身临其境地感受口译工作的实际需求。 2. 丰富的实践机会&#xff1a;虚拟情景实训教学系统提…

数据结构线性表——带头双向循环链表

前言&#xff1a;小伙伴们好久不见啦&#xff0c;上篇文章我们一起学习了数据结构线性表其一的单链表&#xff0c;了解了单链表的不少好处&#xff0c;但是不可能有完美的数据结构&#xff0c;就算是单链表&#xff0c;也会有很多缺点。 那么今天这篇文章&#xff0c;我们就来…

【debug】解决Kali虚拟机开机黑屏,左上角光标一直闪动无法开机问题

做网络攻防实验时&#xff0c;突然Kali无法打开&#xff0c;遇到这个问题。。。。。。 遇到的问题 突然kali虚拟机变成如下黑屏&#xff0c;无法开机&#xff0c;左上角光标闪动&#xff0c;重启无效。 解决办法 在上图界面&#xff0c;按Ctrl F3&#xff08;不同电脑快捷键…

CSS 的 link 标签放在 head 标签之间的作用

当我们在开发网页时&#xff0c;经常会遇到关于CSS文件引入位置的讨论。有些人喜欢将CSS文件的链接放在HTML文件的底部&#xff0c;而另一些人则认为最好将CSS链接放在<head>标签之间。那么&#xff0c;究竟应该将CSS的link标签放在head标签之间的原因是什么呢&#xff1…

vue-组件注册及使用

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容-组件注册及使用 目录 1、组件的注册及使用 2、组件常用属性 2.1、directive 2.2、computed 2.…

2023-11-rust-struct

struct 类似 schema。 ts的interface 和type struct MyStruct {width: i32,height: i32, } 创建实例 let eg1 MyStruct {width: 23,height: 22,}; struct 可以有自己的方法&#xff0c;并且默认第一个参数是该实例 impl MyStruct {fn can_hold(&self, instance: &…

ssh开启,centOS7

1、先确定虚拟机是否装了openssh-server&#xff0c;执行 yum list installed |grep openssh-server 查看是否安装 [rootlocalhost ~]# yum list installed |grep openssh-server Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast openssh-serve…

算法通关村第十五关白银挑战——海量数据场景下的热门算法题

大家好&#xff0c;我是怒码少年小码。 最近超级忙&#xff0c;很多实验报告&#xff0c;已经四五天没搞了&#xff0c;但是我还是回来了&#xff01; 海量数据场景下的热门算法题 本篇的题目不要求写代码&#xff0c;面试的时候能很清楚的说出思路就可以了。 1. 从40个亿中…

RESTful API概述以及如何使用它构建 web 应用程序

REST&#xff08;Representational State Transfer&#xff09;是一种设计风格和架构原则&#xff0c;它是一种为 Web 应用程序提供简化和标准化的 API 的方式。RESTful API&#xff08;RESTful Web Services&#xff09;是符合 REST 架构风格的网络应用程序 API&#xff0c;它…

SpringBoot学习笔记-项目初始化

笔记内容转载自 AcWing 的 SpringBoot 框架课讲义&#xff0c;课程链接&#xff1a;AcWing SpringBoot 框架课。 CONTENTS 1. 概念与项目介绍2. 创建SpringBoot项目后端3. 前后端不分离开发方式4. 前后端分离开发方式5. 创建Vue项目前端6. 前后端通信 1. 概念与项目介绍 本次开…

RSA加密、解密、签名、验签(验证签名)RSA算法原理

一、加密的原因 1.加密&#xff1a;是为了防止信息泄露&#xff1b; 2.签名&#xff1a;签名为了防止信息被篡改&#xff0c;保证数据完整性和发送方角色的可靠性和不可依赖性。 二、RSA加密简介 RSA加密是一种非对称加密。可在不直接传递密钥的情况下&#xff0c;完成解密&…

如何解决Windows电脑 Create folder error,Access is denied.

如何解决 Create folder error, Error: mkdir C:\Program Files\nodejs\21.1.0/: Access is denied. Waring: Name : http://npm.taobao.org/mirrors/node/v21.1.0/win-x64/node.exe Code : -2 Error : Create folder error, Error: mkdir C:\Program Files\nodejs\\21.1.0/…

【Vue原理解析】之模版编译

引言 Vue.js是一款流行的JavaScript框架&#xff0c;它采用了基于组件的开发模式&#xff0c;使得前端开发更加简单和高效。而Vue的核心功能之一就是模版解析&#xff0c;它负责将Vue组件中的模版代码转化为可执行的JavaScript代码。本文将深入探讨Vue模版解析的作用、核心源码…