前缀和-leetcode303
LeetCode上的题目 "303. 区域和检索 - 数组不可变",是一个相对简单的问题。
问题描述:
给定一个整数数组 nums,求出该数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i, j 两点。
实现 NumArray 类:
NumArray(int[] nums) 用整数数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i, j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))
示例:
输入:
nums = [-2, 0, 3, -5, 2, -1]
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
思路:利用前缀和或者dp 记录,从头开始每一步的累计和,然后在需要的时候直接取值
//leetcode submit region begin(Prohibit modification and deletion)
class NumArray {
private int[] prefixNum;
public NumArray(int[] nums) {
prefixNum = new int[nums.length];
prefixNum[0]=nums[0];
for (int i = 1; i < nums.length; i++) {
prefixNum[i]= prefixNum[i-1]+nums[i];
}
}
public int sumRange(int left, int right) {
if(left == 0){
return prefixNum[right];
}
return prefixNum[right]-prefixNum[left-1];
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(left,right);
*/
//leetcode submit region end(Prohibit modification and deletion)
不恋尘世浮华,不写红尘纷扰
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2022-04-06 20天备考初级会计
2022-04-06 俩周备考软考中级-软件设计师
2022-04-06 leetcode原地删除系列-27
2022-04-06 leetcode原地删除系列-283移除0