区域和检索-数组不可变(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
相关推荐
散峰而望11 小时前
C++数组(三)(算法竞赛)
开发语言·c++·算法·github
q***952211 小时前
SpringMVC 请求参数接收
前端·javascript·算法
田姐姐tmner11 小时前
Python切片
开发语言·python
初级炼丹师(爱说实话版)11 小时前
多进程与多线程的优缺点及适用场景总结
算法
t***316511 小时前
爬虫学习案例3
爬虫·python·学习
hetao173383711 小时前
2025-11-25~26 hetao1733837的刷题记录
c++·算法
历程里程碑12 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
少许极端12 小时前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
AI小云12 小时前
【数据操作与可视化】Pandas数据处理-其他操作
python·pandas
大佬,救命!!!12 小时前
更换适配python版本直接进行机器学习深度学习等相关环境配置(非仿真环境)
人工智能·python·深度学习·机器学习·学习笔记·详细配置