1.前缀和
1.1 思想
用一个数组进行存储数组区间之和,涉及到区间和的查询,直接使用前缀和数组进行查询,用空间换时间!
1.2 声明方式
一维前缀和数组申明方式
int []sum = new int[n+1]; sum[0] = 0; // 一般会留出0位置的元素充当边界值 // sum[i]中i表示第几个元素,sum[0]表示没有元素的前缀和 for (int i=1;i<=n;i++){ sum[i+1] = sum[i] + nums[i]; }
1.3 适用范围
适用于数组不做修改的区间累加快速求和!
2.例题
leetcode303
class NumArray {
int []sum ;
public NumArray(int[] nums) {
int len = nums.length;
sum = new int[len];
sum[0] = nums[0];
for (int i=1;i<len;i++){
sum[i] = sum[i-1]+nums[i];
}
}
public int sumRange(int left, int right) {
if(left == 0)return sum[right];
return sum[right] - sum[left-1];
}
}
leetcode304
class NumMatrix {
int [][]sum;
public NumMat