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

[LeetCode]303. Range Sum Query - Immutable ★

每天一道编程题

  • 题目描述
  • 样例
  • python解法
  • C语言解法

题目描述

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
题目大意:给定一个数字数组,计算其中下标从 i 到 j 的元素的和,i,j 均合法且为闭区间。

样例

Example:

Given nums = [-2, 0, 3, -5, 2, -1]
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3

python解法

classNumArray:def__init__(self,nums:List[int]):self.nums=[]fori,ninenumerate(nums):ifi!=0:self.nums.append(self.nums[i-1]+n)else:self.nums.append(n)defsumRange(self,i:int,j:int)->int:returnself.nums[j]-(iandself.nums[i-1])

Runtime: 96 ms, faster than 54.19% of Python3 online submissions for Range Sum Query - Immutable.
Memory Usage: 17.3 MB, less than 10.00% of Python3 online submissions for Range Sum Query - Immutable.
题后反思:

  1. 这种题目最简单的思路就是直接将nums赋值给一个实例变量,然后给出范围是直接相加,但是这种方式无形中导致重复计算了很多次.
  2. 所以为了改进算法,可以在初始化的时候将列表的其实位置到当前位置的和计算好,在计算某个范围的和时直接做一次减法就可以了。
  3. 因为求的是闭区间的元素的和,所以在相减的时候下标为i的元素需要判断是否越界。

C语言解法

typedefstruct{int*data;}NumArray;NumArray*numArrayCreate(int*nums,intnumsSize){NumArray*num=(NumArray*)malloc(sizeof(NumArray));num->data=(int*)malloc(sizeof(int)*(numsSize+1));num->data[0]=0;for(inti=1;i<=numsSize;i++){num->data[i]=num->data[i-1]+nums[i-1];}returnnum;}intnumArraySumRange(NumArray*obj,inti,intj){returnobj->data[j+1]-obj->data[i];}voidnumArrayFree(NumArray*obj){free(obj->data);free(obj);}

Runtime: 24 ms, faster than 72.22% of C online submissions for Range Sum Query - Immutable.
Memory Usage: 12.5 MB, less than 33.33% of C online submissions for Range Sum Query - Immutable.
题后反思:

  1. C语言解法中多申请了一个空间存放了0,从而保证了j+1不会越界(i,j都合法的前提下)

文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

http://www.jsqmd.com/news/1282173/

相关文章:

  • 中山夏令营:军博营地效果突出 - 17728181569
  • PAT-1041(乙级)
  • 2026重庆綦江管道疏通防坑指南:利扬师傅教你避开隐形收费 - 余生黄金回收
  • 关于MySQL多表关联时过滤条件的位置
  • python 类中的递归函数使用
  • Hibernate一对多关系
  • 斐波那契数列的实现
  • Jetson Nano视觉数据增强实战:平衡效果与计算开销的边缘优化方案
  • 2026重庆合川管道疏通避坑指南 邻里帮师傅真实测评 - 余生黄金回收
  • 深圳夏令营:军博营地典范 - 17728098551
  • 最后窗口期!2024Q3前未掌握AI办公链路的职场人,将错过晋升关键分水岭
  • 高效管理PS1游戏存档:MemcardRex完整使用指南
  • Godot着色器基础
  • 【单片机毕业设计推荐】 基于 51/STM32 单片机的智能感应台灯控制系统设计与实现,基于 51/STM32 单片机的蓝牙可控人体感应调光台灯设计(011904)
  • matplotlib入门 ----plot()函数
  • 传统图像处理算法总结
  • 【干货】前端进阶应该知道的这些调试方法
  • 3天学完linux基础-----第二天
  • NBM7100A与PIC18F56K42实现超低功耗物联网设备设计
  • 简单总结面向对象
  • 【自然语言处理】
  • 大模型应用的安全红线:从Prompt注入到数据泄露的防护清单
  • Web测试经验分享
  • java学习(87):Interage包装类进制转换
  • 《php面向对象》第28课:封装复杂的MVC-配置文件
  • Beyond Compare 5 激活指南:3分钟快速免费激活终极教程
  • 博客分类和博客专栏整合在一起了
  • PHP:数组函数(1)
  • java线程的状态、线程池、Lambda表达式
  • 首饰回收红榜测评 杭州钱塘区 2026 上门收珠宝靠谱门店梳理 - 每日生活报