知识点
前后缀分解 前缀和
思路
不能使用除法,我们可以预处理每个位置的前后缀的乘积,然后遍历每个位置用前后缀的乘积来计算得到答案。
时间复杂度
预处理前后缀和
遍历整个数组
整体时间复杂度为
AC Code(C++)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param milk_amount int整型vector
* @return int整型vector
*/
vector<int> product_except_self(vector<int>& milk_amount) {
int n = milk_amount.size();
vector<int> l(n + 1), r(n + 1);
l[0] = r[0] = 1;
for (int i = 1; i <= n; i ++) {
l[i] = l[i - 1] * milk_amount[i - 1];
r[i] = r[i - 1] * milk_amount[n - i];
}
vector<int> res(n);
for (int i = 0; i < n; i ++) {
res[i] = l[i] * r[n - i - 1];
}
return res;
}
};

京公网安备 11010502036488号