LeetCode 0303.区域和检索 - 数组不可变:前缀和(两行描述核心思路版本)

【LetMeFly】303.区域和检索 - 数组不可变:前缀和(两行描述核心思路版本)

力扣题目链接:https://leetcode.cn/problems/range-sum-query-immutable/

给定一个整数数组  nums,处理以下类型的多个查询:

  1. 计算索引 left 和 right (包含 leftright)之间的 nums 元素的 ,其中 left <= right

实现 NumArray 类:

  • NumArray(int[] nums) 使用数组 nums 初始化对象
  • int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )

 

示例 1:

输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1)) 
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

 

提示:

  • 1 <= nums.length <= 104
  • -105 <= nums[i] <= 105
  • 0 <= i <= j < nums.length
  • 最多调用 104sumRange 方法

方法一:前缀和

这道题唯一需要掌握的思路是:使用一个 p r e f i x prefix prefix数组,预处理使 p r e f i x [ i ] = ∑ 0 i − 1 n u m s [ i ] prefix[i]=\sum_0^{i-1} nums[i] prefix[i]=0i1nums[i]

这样, ∑ l e f t r i g h t \sum_{left}^{right} leftright就等于 p r e f i x [ r i g h t + 1 ] − p r e f i x [ l e f t ] prefix[right+1]-prefix[left] prefix[right+1]prefix[left]了。

  • 时间复杂度:初始化 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums)),查询 O ( 1 ) O(1) O(1)每次
  • 空间复杂度: O ( l e n ( n u m ) ) O(len(num)) O(len(num)),因为标题说“数组不可变”,否则直接修改原数组能把空间复杂度将为 O ( 1 ) O(1) O(1)

AC代码

C++
class NumArray {
private:vector<int> prefix;
public:NumArray(vector<int>& nums) {prefix.resize(nums.size() + 1);for (int i = 0; i < nums.size(); i++) {prefix[i + 1] = prefix[i] + nums[i];}}int sumRange(int left, int right) {return prefix[right + 1] - prefix[left];}
};
Python
# from typing import Listclass NumArray:def __init__(self, nums: List[int]):self.prefix = [0] * (len(nums) + 1)for i in range(len(nums)):self.prefix[i + 1] = self.prefix[i] + nums[i]def sumRange(self, left: int, right: int) -> int:return self.prefix[right + 1] - self.prefix[left]

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/136801479

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

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

相关文章

ssh免密登陆更换目标主机后无法连接

在进行hadoop分布式环境搭建时&#xff08;三台机&#xff0c;master&#xff0c;slave1&#xff0c;slave2&#xff09;&#xff0c;后期slave2系统出现问题&#xff0c;更换新机后&#xff0c;master与slave2文件传输失败&#xff1a; 以为是秘钥过期的问题&#xff0c;更换…

走出大模型部署新手村!小明这样用魔搭+函数计算

作者&#xff1a;拓山 前文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 服务。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算&#xff0c;当选择模型并部署时&#xff0c;系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源&#xff0c…

c++多长时间会被Python或者其他语言取代?

c多长时间会被Python或者其他语言取代&#xff1f; 如果不考虑市场因素&#xff0c;C#今天就可以取代C。 自.NET跨平台至今&#xff0c;C能做的工作&#xff0c;C#都能做了&#xff0c;且性能差别不大。 在C最有优势的嵌入式UI方面&#xff0c;C#可以拿出Avalonia替代QT。用 …

9.16单词拆分(LC139-M)

算法&#xff1a; 这道题可以用回溯&#xff0c;但是可能会超时 可以用背包问题解决&#xff1a; 物品&#xff1a;单词 背包&#xff1a;字符串&#xff1a; 单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词&#xff0c;就…

M4芯片和核心板应用于工业网关解决方案

在工业级应用中&#xff0c;M4芯片和核心板凭借其丰富的接口和强大的性能及高性价比特点&#xff0c;已经成为众多工业设备中的首选。本文将从M4芯片和核心板的特点、应用场景、以及其在工业级网关中的应用等方面进行详细阐述。 一、M4芯片和核心板的特点 M4芯片和核心板以其…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服…

camelot pdf提取表格实践(记录)

参考&#xff1a; 巧用Python的camelot库批量提取PDF发票信息 关于文本pdf的表格抽取 AttributeError: module ‘camelot‘ has no attribute ‘read_pdf‘及类似问题解决办法 camelot 参数 https://blog.csdn.net/INTSIG/article/details/123000010 报错解决&#xff1a; Mod…

利用 Python 处理遥感影像数据:计算年度平均影像

在地球科学、气象学以及环境监测等领域&#xff0c;遥感影像数据是一种重要的信息源&#xff0c;它们可以提供地表的地形、植被覆盖、气候变化等丰富信息。然而&#xff0c;随着观测技术的进步&#xff0c;我们通常会获得大量的遥感影像数据&#xff0c;如何高效地处理和分析这…

美团大规模KV存储挑战与架构实践

KV 存储作为美团一项重要的在线存储服务&#xff0c;承载了在线服务每天万亿级的请求量&#xff0c;并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上&#xff0c;我们分享了《美团大规模 KV 存储挑战与架构实践》&#xff0c;本文为演讲内容的整理…

探讨NLP对行业大量数据信息抽取的技术实现

在本文中&#xff0c;为了实现高效的信息抽取&#xff0c;我们采用了一个自主研发的多模态AI的大模型NLP平台。 这个平台的使用过程分为以下几个步骤&#xff1a; 数据收集&#xff1a;我们收集了与项目相关的100条数据样本&#xff0c;这些样本涵盖了各种商品描述&#xff0c…

MongoDB使用笔记

目录 MongoDB介绍1.MongoDB是什么&#xff1f;2.MongoDB 的存储结构3.MongoDB 存储引擎3.1 WiredTiger 基于 LSM Tree 还是 B Tree&#xff1f; 4.MongoDB 聚合4.1 MongoDB 聚合有什么用&#xff1f;4.2 MongoDB 提供了哪几种执行聚合的方法&#xff1f; 5.MongoDB 事务6.Mongo…

Go web 基础相关知识

Go web Web工作方式 浏览器本身是一个客户端&#xff0c;当你输入URL的时候&#xff0c;首先浏览器会去请求DNS服务器&#xff0c;通过DNS获取相应的域名对应的IP&#xff0c;然后通过IP地址找到IP对应的服务器后&#xff0c;要求建立TCP连接&#xff0c;等浏览器发送完HTTP …

软考 网工 每日学习打卡 2024/3/18

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论&#xff0c;在此基础上深入理解网络安全协议的工作原理&#xff0c;并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计

相信大家碰到源码时经常无从下手&#x1f643;&#xff0c;不知道从哪开始阅读&#xff0c;面对大量代码晕头转向&#xff0c;索性就读不下去了&#xff0c;又浪费了一次提升自己的机会&#x1f62d;。 我认为有一种方法&#xff0c;可以解决大家的困扰&#xff01;那就是通过阅…

科研学习|论文解读——指导关键词组提取的局部词向量

原文标题 Local word vectors guiding keyphrase extraction 摘要 自动关键词组提取是一项基本的文本信息处理任务,涉及到从文件中选择具有代表性的短语来概括其内容。这项工作提出了一种新的无监督的关键词组提取方法,其主要创新点是使用局部词嵌入(特别是GloVe向量),即从所…

MacOS---设置Java环境变量

介绍 在MacOS系统配置Java环境变量。 操作步骤 第一步&#xff1a;打开.bash_profile文件 vim ~/.bash_profile第二步&#xff1a;添加或修改配置 如果是第一次配置需要添加配置如果是已经配置过想更换其他版本需要修改配置 在文件末尾添加或修改下面的配置 export JAVA…

SQL的INSERT IGNORE用法

INSERT IGNORE 和 ON DUPLICATE KEY UPDATE 在处理插入操作中遇到唯一键冲突时有着不同的行为&#xff1a; INSERT IGNORE&#xff1a;当使用 INSERT IGNORE 时&#xff0c;如果插入的数据中存在与现有记录的主键或唯一键相同的值&#xff0c;则 MySQL 会忽略该条记录的插入&am…

基于Spring Boot框架的学生作业管理系统

摘 要 快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生…

LWC 学习资源

Lightning Web Components 開発者ガイドlibraryblogs Lightning Web Component (LWC)のご紹介 LWCからデータベースにアクセスする方法 - QiitaLightning Web Component 間の通信の基礎 - Qiita Sodech Developer Blog LWCとApexを連携させてREST コールアウトを実行する Taig…

从零开始学习在VUE3中使用canvas(二):fillStyle(填充样式)

一、fillStyle概念 在canvas中我们可以用fillStyle定义接下来的图像的样式&#xff0c;默认为黑色#000。 我们可以使用纯色、渐变、和纹理&#xff08;例如图片&#xff09;进行填充&#xff0c;来达到自己想要的效果。 二、代码 <template><div class"canva…