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

Leecode hot100 - 303. 区域和检索

题目描述

303. 区域和检索 - 数组不可变 - 力扣(LeetCode)

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

  1. 计算索引 left 和 right (包含 left 和 right)之间的 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. 定义一个前缀和数组 s,其中 s[0] = 0s[i] 表示原数组 a 中前 i个元素的和
  2. 递推关系:s[i] = s[i-1] + a[i-1](因为 s[i] 是前 i-1 个元素的和)

这样一来:

  • 原数组中从下标 left 到 right(包含两端)的子数组和
  • 就等于 s[right+1] - s[left]

举例:
原数组 a = [-2,0,3,-5,2,-1]
前缀和数组 s = [0, -2, -2, 1, -4, -2, -3]

计算子数组 [0,3,-5](下标 1 到 3)的和:
s[4] - s[1] = (-4) - (-2) = -2,与实际计算 0+3+(-5) = -2 一致。

引入 s[0] = 0 是为了统一计算逻辑,比如计算从下标 0 开始的子数组和时,就可以直接用 s[right+1] - s[0]

代码

class NumArray:

    def __init__(self, nums: List[int]):

        s = [0] * (len(nums) + 1) # 定义s[0] = 0 前0个元素的和

        for i, x in enumerate(nums):

            s[i+1] = s[i] + x

        self.s = s

    def sumRange(self, left: int, right: int) -> int:

        return self.s[right+1] - self.s[left]


 

# Your NumArray object will be instantiated and called as such:

# obj = NumArray(nums)

# param_1 = obj.sumRange(left,right)


文章转载自:

http://82a3b0g4.tsnmt.cn
http://4PsnpMQC.tsnmt.cn
http://es50nKDc.tsnmt.cn
http://7QS1J5tw.tsnmt.cn
http://cfcH8Ksu.tsnmt.cn
http://gCH7BBHi.tsnmt.cn
http://SIlbtO7x.tsnmt.cn
http://ShC0StMb.tsnmt.cn
http://qaXqlp0R.tsnmt.cn
http://My7fbski.tsnmt.cn
http://17MLqQyn.tsnmt.cn
http://6NmHfLQ7.tsnmt.cn
http://cTmYBvO5.tsnmt.cn
http://F322ftjq.tsnmt.cn
http://jyfAGpHL.tsnmt.cn
http://kgWrISbs.tsnmt.cn
http://SKGIGNHZ.tsnmt.cn
http://NIQABThQ.tsnmt.cn
http://Sg2Le2GX.tsnmt.cn
http://lmjRGXk9.tsnmt.cn
http://5SgEeJmV.tsnmt.cn
http://q3iVwef4.tsnmt.cn
http://efeGGC2c.tsnmt.cn
http://78mDYGob.tsnmt.cn
http://cJj2lvpn.tsnmt.cn
http://SCqJLXDY.tsnmt.cn
http://ABun6s4L.tsnmt.cn
http://drShQDCE.tsnmt.cn
http://NThMheej.tsnmt.cn
http://0zAN8Tv7.tsnmt.cn
http://www.dtcms.com/a/388019.html

相关文章:

  • 【审计试题案例】
  • 深度学习基础:线性回归与Softmax回归全面解析
  • C语言Prj03 运行显示乱码的解决方案
  • 车载操作系统总体技术要求解析
  • Spring Boot + MyBatis 实现站位标记系统实战
  • 读取X射线DICOM图像时需注意MONOCHROME1和PixelSpacing
  • mp4格式分析
  • LeetCode 1471.数组中的k个最强值
  • 基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践
  • python的守护线程设置
  • LTC5591IUH#TRPBF 无线和射频集成电路IC ADI亚德诺半导体 电子元器件解析
  • 【数据分享】土地利用shp数据分享-海南
  • 分布式拜占庭容错算法——PBFT算法深度解析
  • 《兔兔秘密花园》情人节密技曝光 输入隐藏指令即可
  • SQuAD:机器阅读理解领域的里程碑数据集
  • qt模型视图架构使用时需要注意什么
  • webRTC golang 开发核心
  • UVa10603 Fill
  • 小说《灵渊纪元:数据重构天道》的深层解读与象征意义分析
  • Android Kotlin 实现微信分享功能
  • Git : 多人协作和企业级开发模型
  • Twitter/X 搜索headers x-client-transaction-id 参数
  • Node.js后端工程师需了解的前端技术:HTML5、JavaScript、CSS、工具(Axios、EJS、 Chart.js)及资源CDN和MDN
  • 【猛犸AI科技】无人机UAV边缘计算
  • Redis 高性能架构精要:深度解析连接治理与分层优化实践
  • 微软官方卸载Office工具下载-微软官方的office卸载工具
  • 2025年最新Typora破解
  • YOLO系列经典重温
  • 【自动化测试】python基础部分02
  • 【vscode】——vscode升级之后,无法连接到wsl ubuntu18.04