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

力扣303 区域和检索 - 数组不可变

文章目录

  • 题目介绍
  • 题解

题目介绍

在这里插入图片描述

题解

不用管第一个null,从第二个开始看就可以
法一:暴力解法

class NumArray {private int[] nums;public NumArray(int[] nums) {this.nums = nums;}public int sumRange(int left, int right) {int res = 0;for (int i = left; i <= right; i++) {res += nums[i];}return res;}
}

法二:前缀和
前缀和方法:一种重要的预处理技术,用于快速计算数组中任意区间的元素之和。 它的核心思想是先计算数组中每个位置到起始位置的累积和,然后通过简单的加减运算,就可以快速得到任意区间的和。

为方便描述,把nums记作a。对于数组a,定义它的前缀和:
在这里插入图片描述在这里插入图片描述s[i]代表a[0]+…a[i-1]

定义s[0]的目的是为了解决求当left = 0 的情况。是为了照顾到a[0]=s[1]-s[0]

代码如下:

class NumArray {private int[] s;public NumArray(int[] nums) {s = new int[nums.length + 1];  // 默认初始化为全零for (int i = 0; i < nums.length; i++) {s[i + 1] = s[i] + nums[i];}}public int sumRange(int left, int right) {return s[right + 1] - s[left];}
}
http://www.lryc.cn/news/2379859.html

相关文章:

  • Spring的后置处理器是干什么用的?扩展点又是什么?
  • [ linux-系统 ] 进程地址空间
  • 文件名是 ‪E:\20250512_191204.mp4, EV软件录屏,未保存直接关机损坏, 如何修复?
  • Java常见API文档(下)
  • DRIVEGPT4: 通过大语言模型实现可解释的端到端自动驾驶
  • 知识图谱(KG)与大语言模型(LLM)
  • 构建共有语料库 - Wiki 语料库
  • 苍穹外卖项目中的 WebSocket 实战:实现来单与催单提醒功能
  • 精益数据分析(59/126):移情阶段的深度博弈——如何避开客户访谈的认知陷阱
  • Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
  • Ansible模块——主机名设置和用户/用户组管理
  • 【Redis】List 列表
  • JUC入门(四)
  • 【HarmonyOS 5】鸿蒙mPaaS详解
  • 多线BGP服务器优化实践与自动化运维方案
  • 无法加载文件 E:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  • 【C++模板与泛型编程】实例化
  • TB开拓者策略交易信号闪烁根因及解决方法
  • 什么是RDMA?
  • C++面试3——const关键字的核心概念、典型场景和易错陷阱
  • ASIC和FPGA,到底应该选择哪个?
  • 【C++】嵌套类访问外部类成员
  • mac下载、使用mysql
  • java Lombok 对象模版和日志注解
  • Python学习笔记--使用Django操作mysql
  • win11下,启动springboot时,提示端口被占用的处理方式
  • 计算机视觉设计开发工程师学习路线
  • AI大模型从0到1记录学习numpy pandas day25
  • Opencv C++写中文(来自Gemini)
  • 下载和导出文件名称乱码问题