From 7887f2965fed8a0271f114ad6169990409c10b9f Mon Sep 17 00:00:00 2001 From: rain84 Date: Sat, 20 Jul 2024 02:27:07 +0300 Subject: [PATCH 1/2] feat: update ts solution to lc problem: No.1380 --- .../1380.Lucky Numbers in a Matrix/README.md | 31 +++++++++---------- .../README_EN.md | 31 +++++++++---------- .../Solution.ts | 31 +++++++++---------- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md index 9e1179eaedd60..21579e6b2c72d 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md @@ -180,25 +180,24 @@ func luckyNumbers(matrix [][]int) (ans []int) { ```ts function luckyNumbers(matrix: number[][]): number[] { - const m = matrix.length; - const n = matrix[0].length; - const rows: number[] = new Array(m).fill(1 << 30); - const cols: number[] = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans: number[] = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; } ``` diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md index 541f37076eb83..757fe1a28cb82 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md @@ -173,25 +173,24 @@ func luckyNumbers(matrix [][]int) (ans []int) { ```ts function luckyNumbers(matrix: number[][]): number[] { - const m = matrix.length; - const n = matrix[0].length; - const rows: number[] = new Array(m).fill(1 << 30); - const cols: number[] = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans: number[] = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; } ``` diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.ts b/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.ts index 76d320a825041..ad468bf245eac 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.ts +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.ts @@ -1,21 +1,20 @@ function luckyNumbers(matrix: number[][]): number[] { - const m = matrix.length; - const n = matrix[0].length; - const rows: number[] = new Array(m).fill(1 << 30); - const cols: number[] = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans: number[] = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; } From 2710b70e20fcc55ee5716b2ff090d72c0fafd718 Mon Sep 17 00:00:00 2001 From: rain84 Date: Sat, 20 Jul 2024 02:28:21 +0300 Subject: [PATCH 2/2] feat: update js solution to lc problem: No.1380 --- .../1380.Lucky Numbers in a Matrix/README.md | 31 +++++++++---------- .../README_EN.md | 31 +++++++++---------- .../Solution.js | 31 +++++++++---------- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md index 21579e6b2c72d..9872b9b0b9b6c 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README.md @@ -209,25 +209,24 @@ function luckyNumbers(matrix: number[][]): number[] { * @return {number[]} */ var luckyNumbers = function (matrix) { - const m = matrix.length; - const n = matrix[0].length; - const rows = new Array(m).fill(1 << 30); - const cols = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; }; ``` diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md index 757fe1a28cb82..df449eaa0ae23 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/README_EN.md @@ -202,25 +202,24 @@ function luckyNumbers(matrix: number[][]): number[] { * @return {number[]} */ var luckyNumbers = function (matrix) { - const m = matrix.length; - const n = matrix[0].length; - const rows = new Array(m).fill(1 << 30); - const cols = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; }; ``` diff --git a/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.js b/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.js index 35010e1bfadd7..687a07f56ddfe 100644 --- a/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.js +++ b/solution/1300-1399/1380.Lucky Numbers in a Matrix/Solution.js @@ -3,23 +3,22 @@ * @return {number[]} */ var luckyNumbers = function (matrix) { - const m = matrix.length; - const n = matrix[0].length; - const rows = new Array(m).fill(1 << 30); - const cols = new Array(n).fill(0); - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - rows[i] = Math.min(rows[i], matrix[i][j]); - cols[j] = Math.max(cols[j], matrix[i][j]); - } - } - const ans = []; - for (let i = 0; i < m; ++i) { - for (let j = 0; j < n; j++) { - if (rows[i] === cols[j]) { - ans.push(rows[i]); + const [m, n] = [matrix.length, matrix[0].length]; + const mins = Array(n); + + for (let i = 0; i < n; i++) { + let [max, iMax] = [Number.NEGATIVE_INFINITY, -1]; + + for (let j = 0; j < m; j++) { + if (matrix[j][i] > max) { + max = matrix[j][i]; + iMax = j; } } + + mins[iMax] ??= Math.min(...matrix[iMax]); + if (mins[iMax] === max) return [max]; } - return ans; + + return []; };