区域和检索-数组不可变(LeetCode)

题目

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

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

实现 NumArray 类:

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

解题

python 复制代码
class NumArray:
    def __init__(self, nums):
        # 初始化前缀和数组
        self.prefix_sums = [0] * (len(nums) + 1)
        for i in range(len(nums)):
            self.prefix_sums[i + 1] = self.prefix_sums[i] + nums[i]

    def sumRange(self, left, right):
        # 返回区间和
        return self.prefix_sums[right + 1] - self.prefix_sums[left]


# 使用示例
nums = [-2, 0, 3, -5, 2, -1]
num_array = NumArray(nums)
print(num_array.sumRange(0, 2))  # 输出 1
print(num_array.sumRange(2, 5))  # 输出 -1
print(num_array.sumRange(0, 5))  # 输出 -3
相关推荐
码完就睡8 分钟前
数据结构——栈和队列的相互模拟
数据结构
iiiiyu8 分钟前
常用API(SimpleDateFormat类 & Calendar类 & JDK8日期 时间 日期时间 & JDK8日期(时区) )
java·大数据·开发语言·数据结构·编程语言
故事和你9110 分钟前
洛谷-数据结构1-4-图的基本应用2
开发语言·数据结构·算法·深度优先·动态规划·图论
m0_6742946411 分钟前
Cgo 中正确处理 const char- 类型回调参数的实践方法
jvm·数据库·python
justjinji19 分钟前
Chart.js 4 中实现基于数据极值的垂直线性渐变填充
jvm·数据库·python
迷藏49422 分钟前
# 发散创新:基于Selenium的自动化测试框架重构与实战优化在当今快速迭代的软件开
java·python·selenium·测试工具·重构
天选之子12324 分钟前
Django基本概念入门(一)
python·django·sqlite
吴可可12325 分钟前
C#合并首尾相连多段线实战
算法·c#
m0_6845019831 分钟前
CSS如何实现左图右文布局_利用float属性与清除浮动
jvm·数据库·python
jedi-knight31 分钟前
深入浅入 AI Agent:基于 Python 与 ReAct 模式的自主智能体实现
人工智能·python