238. Product of Array Except Self

https://leetcode.com/problems/construct-product-matrix/description/

class Solution {
public:
    vector<vector<int>> constructProductMatrix(vector<vector<int>>& grid) {
        int n = grid.size();
        int m = grid[0].size();
        const int MOD = 12345;
        vector<vector<int>> result(n, vector<int>(m,1));
        long long prefixProduct = 1;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                result[i][j] = prefixProduct;
                prefixProduct = (prefixProduct * grid[i][j])%MOD;
            }
        }
        long long suffixProduct = 1;
        for(int i=n-1;i>=0;i--){
            for(int j=m-1;j>=0;j--){
                result[i][j] = (result[i][j] * suffixProduct) % MOD;
                suffixProduct = (suffixProduct * grid[i][j]) % MOD;
            }
        }
        return result;
    }
};