From bc0c3c113c0ee0068346c86b0e6193a631657060 Mon Sep 17 00:00:00 2001 From: Phuong Lam Date: Wed, 25 Nov 2020 10:02:09 -0500 Subject: [PATCH 1/2] Add solution for problem 1664 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 90f814519e..34eec0556b 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ _If you like this project, please leave me a star._ ★ | # | Title | Solutions | Video | Difficulty | Tag |-----|----------------|---------------|--------|-------------|------------- +|1664|[Ways to Make a Fair Array](https://leetcode.com/problems/ways-to-make-a-fair-array/)|[Javascript](./javascript/_1664.js) ||Medium|Greedy| |1663|[Smallest String With A Given Numeric Value](https://leetcode.com/problems/smallest-string-with-a-given-numeric-value/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1663.java) ||Medium|Greedy| |1662|[Check If Two String Arrays are Equivalent](https://leetcode.com/problems/check-if-two-string-arrays-are-equivalent/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_1662.java) ||Easy|String| |1658|[Minimum Operations to Reduce X to Zero](https://leetcode.com/problems/minimum-operations-to-reduce-x-to-zero/)|[Javascript](./javascript/_1658.js)||Medium|Greedy| From 73451c342d526709fbfe5e0640fb035ad76f168c Mon Sep 17 00:00:00 2001 From: Phuong Lam Date: Wed, 25 Nov 2020 10:02:23 -0500 Subject: [PATCH 2/2] Add js file --- javascript/_1664.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 javascript/_1664.js diff --git a/javascript/_1664.js b/javascript/_1664.js new file mode 100644 index 0000000000..07c432dede --- /dev/null +++ b/javascript/_1664.js @@ -0,0 +1,37 @@ +// Author: Phuong Lam + +/** + * @param {number[]} nums + * @return {number} + */ +var waysToMakeFair = function (nums) { + var total = 0 + + var lo = 0 // left odd + var le = 0 // left even + var ro = 0 // right odd + var re = 0 // right even + + // when ignore 1 element => right odd mean i % 2 === 0 + for (i = 0; i < nums.length; i++) { + if (i % 2 === 0) ro += nums[i] + else re += nums[i] + } + + // remove position i, recalculate left - right even-odd + for (i = 0; i < nums.length; i++) { + // recalculate left + if (i > 0) { + if (i % 2 === 0) lo += nums[i - 1] + else le += nums[i - 1] + } + + // recalculate right + if (i % 2 === 0) ro -= nums[i] + else re -= nums[i] + + // calc total even & odd + if (lo + ro === le + re) total++ + } + return total +}