前缀和技术实战:从乘积到整除子数组


一、问题直化前缀和
1. 拆拼
核心思路是将问题拆解为可累积的前缀与后缀部分进行拼合。

public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int[] f = new int[n], g = new int[n], ret = new int[n];
f[0] = g[n - 1] = 1;
for (int i = 1; i < n; i++) f[i] = f[i - 1] * nums[i - 1];
for (int i = n - 2; i >= 0; i--) g[i] = g[i + 1] * nums[i + 1];
for ( ; i < n; i++) ret[i] = f[i] * g[i];
ret;
}





