#include <vector>
class Solution {
public:
std::vector<int> productExceptSelf(std::vector<int>& nums) {
int product = 1;
std::vector<int> answer(nums.size(), 1);
// prefix
for (int i = 0; i < nums.size(); i++) {
answer[i] = product;
product *= nums[i];
}
product = 1;
// suffix
for (int i = nums.size() - 1; i >= 0; i--) {
answer[i] *= product;
product *= nums[i];
}
return answer;
}
};