
1 前缀和(双向前缀积)
class Solution {
public:
vector<int> constructArr(vector<int>& a) {
int size = a.size();
vector<int> pre(size + 1, 1);
vector<int> last(size + 1, 1);
vector<int> res(size, 1);
// 前缀积(从左至右乘积)
for (int i = 0; i < size; i++)
pre[i + 1] = pre[i] * a[i];
// 后缀积
for (int i = size - 1; i >= 0; i--)
last[i] = last[i + 1] * a[i];
// 计算结果
for (int i = 0; i < size; i++)
res[i] = pre[i] * last[i + 1];
return res;
}
};

本文介绍了一种使用双向前缀积的方法来解决特定数组问题的C++实现。该算法通过两次遍历输入数组,一次从左到右计算前缀积,另一次从右到左计算后缀积,最终得到每个元素对应位置的乘积结果。
2117

被折叠的 条评论
为什么被折叠?



