区域和检索-数组不可变(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
相关推荐
chao_7892 分钟前
跳跃游戏系列【贪心算法】
python·算法·游戏·贪心算法·贪心
飞Link9 分钟前
K 折交叉验证(K-Fold Cross Validation)全解析:原理、代码实践、应用场景与常见坑点
人工智能·python·机器学习
波波00713 分钟前
每日一题:.NET 中什么是 LOH(大对象堆)?为什么频繁使用大数组或大字符串可能导致性能问题?如何优化?
java·jvm·算法
独自破碎E14 分钟前
动态规划-正则表达式匹配
算法·正则表达式·动态规划
Gofarlic_OMS14 分钟前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化
漫随流水15 分钟前
leetcode回溯算法(131.分割回文串)
数据结构·算法·leetcode·回溯算法
衫水16 分钟前
如何在离线情况下部署项目(前端VUE + 后端Python)
前端·vue.js·python
【赫兹威客】浩哥17 分钟前
【赫兹威客】框架模板-后端命令行部署教程
python·django
Java后端的Ai之路18 分钟前
【Python小知识】-self是什么?
linux·python··self
你撅嘴真丑18 分钟前
第六章 数据结构基础
数据结构