区域和检索-数组不可变(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
相关推荐
云和数据.ChenGuang23 分钟前
pycharm怎么将背景换成白色
ide·python·pycharm
10岁的博客28 分钟前
二维差分算法高效解靶场问题
java·服务器·算法
轻微的风格艾丝凡29 分钟前
锂电池 SOC 估计技术综述:成熟算法、新颖突破与车企应用实践
算法·汽车
Codeking__30 分钟前
动态规划算法经典问题——01背包问题
算法·动态规划
R-G-B31 分钟前
归并排序 (BM20 数组中的逆序对)
数据结构·算法·排序算法
少许极端33 分钟前
算法奇妙屋(十二)-优先级队列(堆)
数据结构·算法·leetcode·优先级队列··图解算法
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 25--数据驱动--参数化处理 Excel 文件 2
前端·python·学习·测试工具·ui·pytest
DO_Community1 小时前
基于AI Agent模板:快速生成 SQL 测试数据
人工智能·python·sql·ai·llm·ai编程
kupeThinkPoem1 小时前
哈希表有哪些算法?
数据结构·算法
小白程序员成长日记2 小时前
2025.11.16 力扣每日一题
算法