Skip to content

Commit a4dec26

Browse files
committed
feat: add solutions for lc No.2906
1 parent 37e5ed9 commit a4dec26

File tree

4 files changed

+176
-0
lines changed

4 files changed

+176
-0
lines changed

solution/2900-2999/2906.Construct Product Matrix/README.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,68 @@ impl Solution {
243243
}
244244
```
245245

246+
#### JavaScript
247+
248+
```js
249+
/**
250+
* @param {number[][]} grid
251+
* @return {number[][]}
252+
*/
253+
var constructProductMatrix = function (grid) {
254+
const mod = 12345;
255+
const [n, m] = [grid.length, grid[0].length];
256+
const p = Array.from({ length: n }, () => Array.from({ length: m }, () => 0));
257+
let suf = 1;
258+
for (let i = n - 1; ~i; --i) {
259+
for (let j = m - 1; ~j; --j) {
260+
p[i][j] = suf;
261+
suf = (suf * grid[i][j]) % mod;
262+
}
263+
}
264+
let pre = 1;
265+
for (let i = 0; i < n; ++i) {
266+
for (let j = 0; j < m; ++j) {
267+
p[i][j] = (p[i][j] * pre) % mod;
268+
pre = (pre * grid[i][j]) % mod;
269+
}
270+
}
271+
return p;
272+
};
273+
```
274+
275+
#### C#
276+
277+
```cs
278+
public class Solution {
279+
public int[][] ConstructProductMatrix(int[][] grid) {
280+
const int mod = 12345;
281+
int n = grid.Length, m = grid[0].Length;
282+
int[][] p = new int[n][];
283+
for (int i = 0; i < n; ++i) {
284+
p[i] = new int[m];
285+
}
286+
287+
long suf = 1;
288+
for (int i = n - 1; i >= 0; --i) {
289+
for (int j = m - 1; j >= 0; --j) {
290+
p[i][j] = (int)suf;
291+
suf = suf * grid[i][j] % mod;
292+
}
293+
}
294+
295+
long pre = 1;
296+
for (int i = 0; i < n; ++i) {
297+
for (int j = 0; j < m; ++j) {
298+
p[i][j] = (int)(p[i][j] * pre % mod);
299+
pre = pre * grid[i][j] % mod;
300+
}
301+
}
302+
303+
return p;
304+
}
305+
}
306+
```
307+
246308
<!-- tabs:end -->
247309

248310
<!-- solution:end -->

solution/2900-2999/2906.Construct Product Matrix/README_EN.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,68 @@ impl Solution {
241241
}
242242
```
243243

244+
#### JavaScript
245+
246+
```js
247+
/**
248+
* @param {number[][]} grid
249+
* @return {number[][]}
250+
*/
251+
var constructProductMatrix = function (grid) {
252+
const mod = 12345;
253+
const [n, m] = [grid.length, grid[0].length];
254+
const p = Array.from({ length: n }, () => Array.from({ length: m }, () => 0));
255+
let suf = 1;
256+
for (let i = n - 1; ~i; --i) {
257+
for (let j = m - 1; ~j; --j) {
258+
p[i][j] = suf;
259+
suf = (suf * grid[i][j]) % mod;
260+
}
261+
}
262+
let pre = 1;
263+
for (let i = 0; i < n; ++i) {
264+
for (let j = 0; j < m; ++j) {
265+
p[i][j] = (p[i][j] * pre) % mod;
266+
pre = (pre * grid[i][j]) % mod;
267+
}
268+
}
269+
return p;
270+
};
271+
```
272+
273+
#### C#
274+
275+
```cs
276+
public class Solution {
277+
public int[][] ConstructProductMatrix(int[][] grid) {
278+
const int mod = 12345;
279+
int n = grid.Length, m = grid[0].Length;
280+
int[][] p = new int[n][];
281+
for (int i = 0; i < n; ++i) {
282+
p[i] = new int[m];
283+
}
284+
285+
long suf = 1;
286+
for (int i = n - 1; i >= 0; --i) {
287+
for (int j = m - 1; j >= 0; --j) {
288+
p[i][j] = (int)suf;
289+
suf = suf * grid[i][j] % mod;
290+
}
291+
}
292+
293+
long pre = 1;
294+
for (int i = 0; i < n; ++i) {
295+
for (int j = 0; j < m; ++j) {
296+
p[i][j] = (int)(p[i][j] * pre % mod);
297+
pre = pre * grid[i][j] % mod;
298+
}
299+
}
300+
301+
return p;
302+
}
303+
}
304+
```
305+
244306
<!-- tabs:end -->
245307

246308
<!-- solution:end -->
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public class Solution {
2+
public int[][] ConstructProductMatrix(int[][] grid) {
3+
const int mod = 12345;
4+
int n = grid.Length, m = grid[0].Length;
5+
int[][] p = new int[n][];
6+
for (int i = 0; i < n; ++i) {
7+
p[i] = new int[m];
8+
}
9+
10+
long suf = 1;
11+
for (int i = n - 1; i >= 0; --i) {
12+
for (int j = m - 1; j >= 0; --j) {
13+
p[i][j] = (int)suf;
14+
suf = suf * grid[i][j] % mod;
15+
}
16+
}
17+
18+
long pre = 1;
19+
for (int i = 0; i < n; ++i) {
20+
for (int j = 0; j < m; ++j) {
21+
p[i][j] = (int)(p[i][j] * pre % mod);
22+
pre = pre * grid[i][j] % mod;
23+
}
24+
}
25+
26+
return p;
27+
}
28+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number[][]}
4+
*/
5+
var constructProductMatrix = function (grid) {
6+
const mod = 12345;
7+
const [n, m] = [grid.length, grid[0].length];
8+
const p = Array.from({ length: n }, () => Array.from({ length: m }, () => 0));
9+
let suf = 1;
10+
for (let i = n - 1; ~i; --i) {
11+
for (let j = m - 1; ~j; --j) {
12+
p[i][j] = suf;
13+
suf = (suf * grid[i][j]) % mod;
14+
}
15+
}
16+
let pre = 1;
17+
for (let i = 0; i < n; ++i) {
18+
for (let j = 0; j < m; ++j) {
19+
p[i][j] = (p[i][j] * pre) % mod;
20+
pre = (pre * grid[i][j]) % mod;
21+
}
22+
}
23+
return p;
24+
};

0 commit comments

Comments
 (0)