From 55357f2c2482abdaefecb5648862c6678ca19e5b Mon Sep 17 00:00:00 2001 From: Aadil <77232799+aadil42@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:41:20 +0530 Subject: [PATCH 1/2] Create 2017-grid-game.js Solved grid-game in JS. --- javascript/2017-grid-game.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 javascript/2017-grid-game.js diff --git a/javascript/2017-grid-game.js b/javascript/2017-grid-game.js new file mode 100644 index 000000000..14ddb29da --- /dev/null +++ b/javascript/2017-grid-game.js @@ -0,0 +1,26 @@ +/** + * https://leetcode.com/problems/grid-game/ + * Linear + * Time O(n) | Space O(n) + * @param {number[][]} grid + * @return {number} + */ +var gridGame = function(grid) { + + const preSum1 = [0]; + const preSum2 = [0]; + for(let i = 1; i <= grid[0].length; i++) { + preSum1.push(preSum1[i - 1] + grid[0][i - 1]); + preSum2.push(preSum2[i - 1] + grid[1][i - 1]); + } + + let res = Infinity; + for(let i = 1; i < preSum1.length; i++) { + const top = preSum1[preSum1.length - 1] - preSum1[i]; + const bottom = preSum2[i -1]; + let secondRobot = Math.max(top, bottom); + res = Math.min(res, secondRobot); + } + + return res; +}; From 36f372363ec1b00d1cb0a130d0a89ef89c3abc1c Mon Sep 17 00:00:00 2001 From: Aadil <77232799+aadil42@users.noreply.github.com> Date: Mon, 3 Jul 2023 17:42:27 +0530 Subject: [PATCH 2/2] Update 2017-grid-game.js Splitting code into modules for better readability. --- javascript/2017-grid-game.js | 40 ++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/javascript/2017-grid-game.js b/javascript/2017-grid-game.js index 14ddb29da..3ab181316 100644 --- a/javascript/2017-grid-game.js +++ b/javascript/2017-grid-game.js @@ -5,22 +5,32 @@ * @param {number[][]} grid * @return {number} */ -var gridGame = function(grid) { - const preSum1 = [0]; - const preSum2 = [0]; - for(let i = 1; i <= grid[0].length; i++) { - preSum1.push(preSum1[i - 1] + grid[0][i - 1]); - preSum2.push(preSum2[i - 1] + grid[1][i - 1]); +// Calculate the prefix sums for a given row in the grid +function calculatePrefixSums(row) { + const prefixSums = [0]; + for (let i = 1; i <= row.length; i++) { + prefixSums.push(prefixSums[i - 1] + row[i - 1]); } + return prefixSums; +} - let res = Infinity; - for(let i = 1; i < preSum1.length; i++) { - const top = preSum1[preSum1.length - 1] - preSum1[i]; - const bottom = preSum2[i -1]; - let secondRobot = Math.max(top, bottom); - res = Math.min(res, secondRobot); +// Find the minimum value between two arrays +function findMinimumValue(arr1, arr2) { + let min = Infinity; + for (let i = 1; i < arr1.length; i++) { + const top = arr1[arr1.length - 1] - arr1[i]; + const bottom = arr2[i - 1]; + let secondRobot = Math.max(top, bottom); + min = Math.min(min, secondRobot); } - - return res; -}; + return min; +} + +// Main function to calculate the minimum result +function gridGame(grid) { + const preSum1 = calculatePrefixSums(grid[0]); + const preSum2 = calculatePrefixSums(grid[1]); + + return findMinimumValue(preSum1, preSum2); +}