30 lines
670 B
Go
30 lines
670 B
Go
// Package q2906 implements a solution for https://leetcode.com/problems/construct-product-matrix/
|
|
package q2906
|
|
|
|
const MOD = 12345
|
|
|
|
func constructProductMatrix(grid [][]int) [][]int {
|
|
w, h := len(grid[0]), len(grid)
|
|
output := make([][]int, h)
|
|
output[0] = make([]int, w*h)
|
|
for i := h - 1; i >= 0; i-- {
|
|
output[i] = output[0][i*w : (i+1)*w]
|
|
}
|
|
|
|
suffix := 1
|
|
for i := w*h - 1; i >= 0; i-- {
|
|
y, x := i/w, i%w
|
|
output[y][x] = suffix
|
|
suffix = suffix * grid[y][x] % MOD
|
|
}
|
|
|
|
prefix := 1
|
|
for i := range w * h {
|
|
y, x := i/w, i%w
|
|
output[y][x] = output[y][x] * prefix % MOD
|
|
prefix = prefix * grid[y][x] % MOD
|
|
}
|
|
return output
|
|
}
|
|
|
|
var _ = constructProductMatrix
|