From 74c5827979ca40a06cca8467df6a955391c3467e Mon Sep 17 00:00:00 2001 From: Abhinandan <93651229+AE-Hertz@users.noreply.github.com> Date: Thu, 8 Aug 2024 10:48:09 +0530 Subject: [PATCH 1/9] feat: add solutions to lc problem: No.0885 --- .../0885.Spiral Matrix III/Solution.js | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 solution/0800-0899/0885.Spiral Matrix III/Solution.js diff --git a/solution/0800-0899/0885.Spiral Matrix III/Solution.js b/solution/0800-0899/0885.Spiral Matrix III/Solution.js new file mode 100644 index 0000000000000..4e068bb419be4 --- /dev/null +++ b/solution/0800-0899/0885.Spiral Matrix III/Solution.js @@ -0,0 +1,34 @@ +/** + * @param {number} rows + * @param {number} cols + * @param {number} rStart + * @param {number} cStart + * @return {number[][]} + */ +var spiralMatrixIII = function(rows, cols, rStart, cStart) { + let result = []; + let totalCells = rows * cols; + let directions = [[0, 1], [1, 0], [0, -1], [-1, 0]]; + let step = 0; + let d = 0; + let r = rStart, c = cStart; + + result.push([r, c]); + + while (result.length < totalCells) { + if (d === 0 || d === 2) step++; + + for (let i = 0; i < step; i++) { + r += directions[d][0]; + c += directions[d][1]; + + if (r >= 0 && r < rows && c >= 0 && c < cols) { + result.push([r, c]); + } + } + + d = (d + 1) % 4; + } + + return result; +}; From 25caf403b3ded8467de73d183fb82eaf8ad1867d Mon Sep 17 00:00:00 2001 From: AE-Hertz Date: Thu, 8 Aug 2024 05:43:45 +0000 Subject: [PATCH 2/9] style: format code and docs with prettier --- .../0885.Spiral Matrix III/Solution.js | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/solution/0800-0899/0885.Spiral Matrix III/Solution.js b/solution/0800-0899/0885.Spiral Matrix III/Solution.js index 4e068bb419be4..79a0f3dee9b3a 100644 --- a/solution/0800-0899/0885.Spiral Matrix III/Solution.js +++ b/solution/0800-0899/0885.Spiral Matrix III/Solution.js @@ -5,30 +5,36 @@ * @param {number} cStart * @return {number[][]} */ -var spiralMatrixIII = function(rows, cols, rStart, cStart) { +var spiralMatrixIII = function (rows, cols, rStart, cStart) { let result = []; let totalCells = rows * cols; - let directions = [[0, 1], [1, 0], [0, -1], [-1, 0]]; + let directions = [ + [0, 1], + [1, 0], + [0, -1], + [-1, 0], + ]; let step = 0; - let d = 0; - let r = rStart, c = cStart; - + let d = 0; + let r = rStart, + c = cStart; + result.push([r, c]); - + while (result.length < totalCells) { if (d === 0 || d === 2) step++; - + for (let i = 0; i < step; i++) { r += directions[d][0]; c += directions[d][1]; - + if (r >= 0 && r < rows && c >= 0 && c < cols) { result.push([r, c]); } } - + d = (d + 1) % 4; } - + return result; }; From a759f9c3e488420e0401979f43c80661e03ba864 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 8 Aug 2024 14:10:13 +0800 Subject: [PATCH 3/9] Update Solution.js --- .../0885.Spiral Matrix III/Solution.js | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/solution/0800-0899/0885.Spiral Matrix III/Solution.js b/solution/0800-0899/0885.Spiral Matrix III/Solution.js index 79a0f3dee9b3a..01f66eeb78e6c 100644 --- a/solution/0800-0899/0885.Spiral Matrix III/Solution.js +++ b/solution/0800-0899/0885.Spiral Matrix III/Solution.js @@ -6,9 +6,9 @@ * @return {number[][]} */ var spiralMatrixIII = function (rows, cols, rStart, cStart) { - let result = []; - let totalCells = rows * cols; - let directions = [ + const ans = []; + const totalCells = rows * cols; + const directions = [ [0, 1], [1, 0], [0, -1], @@ -16,25 +16,20 @@ var spiralMatrixIII = function (rows, cols, rStart, cStart) { ]; let step = 0; let d = 0; - let r = rStart, - c = cStart; - - result.push([r, c]); - - while (result.length < totalCells) { - if (d === 0 || d === 2) step++; - + let [r, c] = [rStart, cStart]; + ans.push([r, c]); + while (ans.length < totalCells) { + if (d === 0 || d === 2) { + step++; + } for (let i = 0; i < step; i++) { r += directions[d][0]; c += directions[d][1]; - if (r >= 0 && r < rows && c >= 0 && c < cols) { - result.push([r, c]); + ans.push([r, c]); } } - d = (d + 1) % 4; } - - return result; + return ans; }; From 4a49614c5b6e93855cbc0933c13dd206797d41b9 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 8 Aug 2024 14:10:57 +0800 Subject: [PATCH 4/9] Update README.md --- .../0885.Spiral Matrix III/README.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/solution/0800-0899/0885.Spiral Matrix III/README.md b/solution/0800-0899/0885.Spiral Matrix III/README.md index 746fc2d2703ba..db39ac38dcf8e 100644 --- a/solution/0800-0899/0885.Spiral Matrix III/README.md +++ b/solution/0800-0899/0885.Spiral Matrix III/README.md @@ -173,6 +173,46 @@ func spiralMatrixIII(rows int, cols int, rStart int, cStart int) [][]int { } ``` +#### JavaScript + +```js +/** + * @param {number} rows + * @param {number} cols + * @param {number} rStart + * @param {number} cStart + * @return {number[][]} + */ +var spiralMatrixIII = function (rows, cols, rStart, cStart) { + const ans = []; + const totalCells = rows * cols; + const directions = [ + [0, 1], + [1, 0], + [0, -1], + [-1, 0], + ]; + let step = 0; + let d = 0; + let [r, c] = [rStart, cStart]; + ans.push([r, c]); + while (ans.length < totalCells) { + if (d === 0 || d === 2) { + step++; + } + for (let i = 0; i < step; i++) { + r += directions[d][0]; + c += directions[d][1]; + if (r >= 0 && r < rows && c >= 0 && c < cols) { + ans.push([r, c]); + } + } + d = (d + 1) % 4; + } + return ans; +}; +``` + From 549de7360aa07d6d1889ade7509127502b7e2d8f Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Thu, 8 Aug 2024 14:11:10 +0800 Subject: [PATCH 5/9] Update README_EN.md --- .../0885.Spiral Matrix III/README_EN.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/solution/0800-0899/0885.Spiral Matrix III/README_EN.md b/solution/0800-0899/0885.Spiral Matrix III/README_EN.md index 42e57339a9b0e..0408075aab7df 100644 --- a/solution/0800-0899/0885.Spiral Matrix III/README_EN.md +++ b/solution/0800-0899/0885.Spiral Matrix III/README_EN.md @@ -169,6 +169,46 @@ func spiralMatrixIII(rows int, cols int, rStart int, cStart int) [][]int { } ``` +#### JavaScript + +```js +/** + * @param {number} rows + * @param {number} cols + * @param {number} rStart + * @param {number} cStart + * @return {number[][]} + */ +var spiralMatrixIII = function (rows, cols, rStart, cStart) { + const ans = []; + const totalCells = rows * cols; + const directions = [ + [0, 1], + [1, 0], + [0, -1], + [-1, 0], + ]; + let step = 0; + let d = 0; + let [r, c] = [rStart, cStart]; + ans.push([r, c]); + while (ans.length < totalCells) { + if (d === 0 || d === 2) { + step++; + } + for (let i = 0; i < step; i++) { + r += directions[d][0]; + c += directions[d][1]; + if (r >= 0 && r < rows && c >= 0 && c < cols) { + ans.push([r, c]); + } + } + d = (d + 1) % 4; + } + return ans; +}; +``` + From a907914ad3ba9b5d2750e94210bda8d9a4b6acd0 Mon Sep 17 00:00:00 2001 From: Abhinandan <93651229+AE-Hertz@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:06:33 +0530 Subject: [PATCH 6/9] feat: add solutions to lc project No. 0840 --- .../0840.Magic Squares In Grid/Solution.js | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 solution/0800-0899/0840.Magic Squares In Grid/Solution.js diff --git a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js new file mode 100644 index 0000000000000..c0b1d40f33a6b --- /dev/null +++ b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js @@ -0,0 +1,40 @@ +/** + * @param {number[][]} grid + * @return {number} + */ +var numMagicSquaresInside = function(grid) { + const isMagic = (i, j) => { + const s = new Set(); + for (let x = 0; x < 3; x++) { + for (let y = 0; y < 3; y++) { + const num = grid[i + x][j + y]; + if (num < 1 || num > 9 || s.has(num)) return false; + s.add(num); + } + } + + const rowSum = grid[i][j] + grid[i][j+1] + grid[i][j+2]; + if (rowSum !== grid[i+1][j] + grid[i+1][j+1] + grid[i+1][j+2]) return false; + if (rowSum !== grid[i+2][j] + grid[i+2][j+1] + grid[i+2][j+2]) return false; + + const colSum1 = grid[i][j] + grid[i+1][j] + grid[i+2][j]; + const colSum2 = grid[i][j+1] + grid[i+1][j+1] + grid[i+2][j+1]; + const colSum3 = grid[i][j+2] + grid[i+1][j+2] + grid[i+2][j+2]; + if (rowSum !== colSum1 || rowSum !== colSum2 || rowSum !== colSum3) return false; + + if (rowSum !== grid[i][j] + grid[i+1][j+1] + grid[i+2][j+2]) return false; + if (rowSum !== grid[i][j+2] + grid[i+1][j+1] + grid[i+2][j]) return false; + + return true; + }; + + let count = 0; + + for (let i = 0; i < grid.length - 2; i++) { + for (let j = 0; j < grid[0].length - 2; j++) { + if (isMagic(i, j)) count++; + } + } + + return count; +}; From 6b698bb5826d5604f4fcc4b89771e6267a69961b Mon Sep 17 00:00:00 2001 From: Abhinandan <93651229+AE-Hertz@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:20:43 +0530 Subject: [PATCH 7/9] Delete solution/0800-0899/0840.Magic Squares In Grid/Solution.js --- .../0840.Magic Squares In Grid/Solution.js | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 solution/0800-0899/0840.Magic Squares In Grid/Solution.js diff --git a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js deleted file mode 100644 index c0b1d40f33a6b..0000000000000 --- a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * @param {number[][]} grid - * @return {number} - */ -var numMagicSquaresInside = function(grid) { - const isMagic = (i, j) => { - const s = new Set(); - for (let x = 0; x < 3; x++) { - for (let y = 0; y < 3; y++) { - const num = grid[i + x][j + y]; - if (num < 1 || num > 9 || s.has(num)) return false; - s.add(num); - } - } - - const rowSum = grid[i][j] + grid[i][j+1] + grid[i][j+2]; - if (rowSum !== grid[i+1][j] + grid[i+1][j+1] + grid[i+1][j+2]) return false; - if (rowSum !== grid[i+2][j] + grid[i+2][j+1] + grid[i+2][j+2]) return false; - - const colSum1 = grid[i][j] + grid[i+1][j] + grid[i+2][j]; - const colSum2 = grid[i][j+1] + grid[i+1][j+1] + grid[i+2][j+1]; - const colSum3 = grid[i][j+2] + grid[i+1][j+2] + grid[i+2][j+2]; - if (rowSum !== colSum1 || rowSum !== colSum2 || rowSum !== colSum3) return false; - - if (rowSum !== grid[i][j] + grid[i+1][j+1] + grid[i+2][j+2]) return false; - if (rowSum !== grid[i][j+2] + grid[i+1][j+1] + grid[i+2][j]) return false; - - return true; - }; - - let count = 0; - - for (let i = 0; i < grid.length - 2; i++) { - for (let j = 0; j < grid[0].length - 2; j++) { - if (isMagic(i, j)) count++; - } - } - - return count; -}; From 7adc2881c27d5c7f8256d8c3b4671e11874622af Mon Sep 17 00:00:00 2001 From: Abhinandan <93651229+AE-Hertz@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:21:35 +0530 Subject: [PATCH 8/9] feat: add solutions to lc no.0840 --- .../0840.Magic Squares In Grid/Solution.js | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 solution/0800-0899/0840.Magic Squares In Grid/Solution.js diff --git a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js new file mode 100644 index 0000000000000..c0b1d40f33a6b --- /dev/null +++ b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js @@ -0,0 +1,40 @@ +/** + * @param {number[][]} grid + * @return {number} + */ +var numMagicSquaresInside = function(grid) { + const isMagic = (i, j) => { + const s = new Set(); + for (let x = 0; x < 3; x++) { + for (let y = 0; y < 3; y++) { + const num = grid[i + x][j + y]; + if (num < 1 || num > 9 || s.has(num)) return false; + s.add(num); + } + } + + const rowSum = grid[i][j] + grid[i][j+1] + grid[i][j+2]; + if (rowSum !== grid[i+1][j] + grid[i+1][j+1] + grid[i+1][j+2]) return false; + if (rowSum !== grid[i+2][j] + grid[i+2][j+1] + grid[i+2][j+2]) return false; + + const colSum1 = grid[i][j] + grid[i+1][j] + grid[i+2][j]; + const colSum2 = grid[i][j+1] + grid[i+1][j+1] + grid[i+2][j+1]; + const colSum3 = grid[i][j+2] + grid[i+1][j+2] + grid[i+2][j+2]; + if (rowSum !== colSum1 || rowSum !== colSum2 || rowSum !== colSum3) return false; + + if (rowSum !== grid[i][j] + grid[i+1][j+1] + grid[i+2][j+2]) return false; + if (rowSum !== grid[i][j+2] + grid[i+1][j+1] + grid[i+2][j]) return false; + + return true; + }; + + let count = 0; + + for (let i = 0; i < grid.length - 2; i++) { + for (let j = 0; j < grid[0].length - 2; j++) { + if (isMagic(i, j)) count++; + } + } + + return count; +}; From 906c747b7df21e09fe8619f110d9508569f55747 Mon Sep 17 00:00:00 2001 From: AE-Hertz Date: Fri, 9 Aug 2024 10:23:04 +0000 Subject: [PATCH 9/9] style: format code and docs with prettier --- .../0840.Magic Squares In Grid/Solution.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js index c0b1d40f33a6b..8236213913de8 100644 --- a/solution/0800-0899/0840.Magic Squares In Grid/Solution.js +++ b/solution/0800-0899/0840.Magic Squares In Grid/Solution.js @@ -2,7 +2,7 @@ * @param {number[][]} grid * @return {number} */ -var numMagicSquaresInside = function(grid) { +var numMagicSquaresInside = function (grid) { const isMagic = (i, j) => { const s = new Set(); for (let x = 0; x < 3; x++) { @@ -13,17 +13,17 @@ var numMagicSquaresInside = function(grid) { } } - const rowSum = grid[i][j] + grid[i][j+1] + grid[i][j+2]; - if (rowSum !== grid[i+1][j] + grid[i+1][j+1] + grid[i+1][j+2]) return false; - if (rowSum !== grid[i+2][j] + grid[i+2][j+1] + grid[i+2][j+2]) return false; + const rowSum = grid[i][j] + grid[i][j + 1] + grid[i][j + 2]; + if (rowSum !== grid[i + 1][j] + grid[i + 1][j + 1] + grid[i + 1][j + 2]) return false; + if (rowSum !== grid[i + 2][j] + grid[i + 2][j + 1] + grid[i + 2][j + 2]) return false; - const colSum1 = grid[i][j] + grid[i+1][j] + grid[i+2][j]; - const colSum2 = grid[i][j+1] + grid[i+1][j+1] + grid[i+2][j+1]; - const colSum3 = grid[i][j+2] + grid[i+1][j+2] + grid[i+2][j+2]; + const colSum1 = grid[i][j] + grid[i + 1][j] + grid[i + 2][j]; + const colSum2 = grid[i][j + 1] + grid[i + 1][j + 1] + grid[i + 2][j + 1]; + const colSum3 = grid[i][j + 2] + grid[i + 1][j + 2] + grid[i + 2][j + 2]; if (rowSum !== colSum1 || rowSum !== colSum2 || rowSum !== colSum3) return false; - if (rowSum !== grid[i][j] + grid[i+1][j+1] + grid[i+2][j+2]) return false; - if (rowSum !== grid[i][j+2] + grid[i+1][j+1] + grid[i+2][j]) return false; + if (rowSum !== grid[i][j] + grid[i + 1][j + 1] + grid[i + 2][j + 2]) return false; + if (rowSum !== grid[i][j + 2] + grid[i + 1][j + 1] + grid[i + 2][j]) return false; return true; };