Skip to content

Commit 2710b70

Browse files
committed
feat: update js solution to lc problem: No.1380
1 parent 7887f29 commit 2710b70

File tree

3 files changed

+45
-48
lines changed

3 files changed

+45
-48
lines changed

solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -209,25 +209,24 @@ function luckyNumbers(matrix: number[][]): number[] {
209209
* @return {number[]}
210210
*/
211211
var luckyNumbers = function (matrix) {
212-
const m = matrix.length;
213-
const n = matrix[0].length;
214-
const rows = new Array(m).fill(1 << 30);
215-
const cols = new Array(n).fill(0);
216-
for (let i = 0; i < m; ++i) {
217-
for (let j = 0; j < n; j++) {
218-
rows[i] = Math.min(rows[i], matrix[i][j]);
219-
cols[j] = Math.max(cols[j], matrix[i][j]);
220-
}
221-
}
222-
const ans = [];
223-
for (let i = 0; i < m; ++i) {
224-
for (let j = 0; j < n; j++) {
225-
if (rows[i] === cols[j]) {
226-
ans.push(rows[i]);
212+
const [m, n] = [matrix.length, matrix[0].length];
213+
const mins = Array(n);
214+
215+
for (let i = 0; i < n; i++) {
216+
let [max, iMax] = [Number.NEGATIVE_INFINITY, -1];
217+
218+
for (let j = 0; j < m; j++) {
219+
if (matrix[j][i] > max) {
220+
max = matrix[j][i];
221+
iMax = j;
227222
}
228223
}
224+
225+
mins[iMax] ??= Math.min(...matrix[iMax]);
226+
if (mins[iMax] === max) return [max];
229227
}
230-
return ans;
228+
229+
return [];
231230
};
232231
```
233232

solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -202,25 +202,24 @@ function luckyNumbers(matrix: number[][]): number[] {
202202
* @return {number[]}
203203
*/
204204
var luckyNumbers = function (matrix) {
205-
const m = matrix.length;
206-
const n = matrix[0].length;
207-
const rows = new Array(m).fill(1 << 30);
208-
const cols = new Array(n).fill(0);
209-
for (let i = 0; i < m; ++i) {
210-
for (let j = 0; j < n; j++) {
211-
rows[i] = Math.min(rows[i], matrix[i][j]);
212-
cols[j] = Math.max(cols[j], matrix[i][j]);
213-
}
214-
}
215-
const ans = [];
216-
for (let i = 0; i < m; ++i) {
217-
for (let j = 0; j < n; j++) {
218-
if (rows[i] === cols[j]) {
219-
ans.push(rows[i]);
205+
const [m, n] = [matrix.length, matrix[0].length];
206+
const mins = Array(n);
207+
208+
for (let i = 0; i < n; i++) {
209+
let [max, iMax] = [Number.NEGATIVE_INFINITY, -1];
210+
211+
for (let j = 0; j < m; j++) {
212+
if (matrix[j][i] > max) {
213+
max = matrix[j][i];
214+
iMax = j;
220215
}
221216
}
217+
218+
mins[iMax] ??= Math.min(...matrix[iMax]);
219+
if (mins[iMax] === max) return [max];
222220
}
223-
return ans;
221+
222+
return [];
224223
};
225224
```
226225

solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.js

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@
33
* @return {number[]}
44
*/
55
var luckyNumbers = function (matrix) {
6-
const m = matrix.length;
7-
const n = matrix[0].length;
8-
const rows = new Array(m).fill(1 << 30);
9-
const cols = new Array(n).fill(0);
10-
for (let i = 0; i < m; ++i) {
11-
for (let j = 0; j < n; j++) {
12-
rows[i] = Math.min(rows[i], matrix[i][j]);
13-
cols[j] = Math.max(cols[j], matrix[i][j]);
14-
}
15-
}
16-
const ans = [];
17-
for (let i = 0; i < m; ++i) {
18-
for (let j = 0; j < n; j++) {
19-
if (rows[i] === cols[j]) {
20-
ans.push(rows[i]);
6+
const [m, n] = [matrix.length, matrix[0].length];
7+
const mins = Array(n);
8+
9+
for (let i = 0; i < n; i++) {
10+
let [max, iMax] = [Number.NEGATIVE_INFINITY, -1];
11+
12+
for (let j = 0; j < m; j++) {
13+
if (matrix[j][i] > max) {
14+
max = matrix[j][i];
15+
iMax = j;
2116
}
2217
}
18+
19+
mins[iMax] ??= Math.min(...matrix[iMax]);
20+
if (mins[iMax] === max) return [max];
2321
}
24-
return ans;
22+
23+
return [];
2524
};

0 commit comments

Comments
 (0)