题目一:除自身以外数组的乘积
class Solution {
public int[] productExceptSelf(int[] nums) {
int len = nums.length;
int[] pre = new int[len];
int[] last = new int[len];
int[] ret = new int[len];
pre[0] = 1;
last[len-1] = 1;
for(int i = 1; i < len; i++) {
pre[i] = pre[i-1] * nums[i-1];
}
for(int i = len-2; i >= 0; i--) {
last[i] = last[i+1] * nums[i+1];
}
for(int i = 0; i < len; i++) {
ret[i] = last[i] * pre[i];
}
return ret;
}
}
前缀积:pre[i] 表示下标 i 左侧所有元素的乘积(不包含 nums[i])。 后缀积:last[i] 表示下标 i 右侧所有元素的乘积(不包含 nums[i])。 除当前下标外所有元素乘积:ret[i] = pre[i] * last[i]。
题目二:和为 K 的子数组
解法一:暴力枚举
class {
{
nums.length;
;
( ; i < len; i++) {
;
( i; j < len; j++) {
sum += nums[j];
(sum == k) {
count++;
}
}
}
count;
}
}

