From 5cceb30c6962b0fa5dbf2d7f5e6aad00a2a78cc6 Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 2 Aug 2024 12:18:08 +0300 Subject: [PATCH 1/6] feat: update ts solution to lc problem: No.2134 --- .../README.md | 16 +++++++++------- .../README_EN.md | 16 +++++++++------- .../Solution.ts | 16 +++++++++------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index bec56c71c5d9c..d149bcb351fc2 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -163,15 +163,17 @@ func minSwaps(nums []int) int { ```ts function minSwaps(nums: number[]): number { - const k = nums.reduce((a, b) => a + b, 0); - let cnt = nums.slice(0, k).reduce((a, b) => a + b, 0); - let mx = cnt; const n = nums.length; - for (let i = k; i < n + k; ++i) { - cnt += nums[i % n] - nums[(i - k + n) % n]; - mx = Math.max(mx, cnt); + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); } - return k - mx; + + return min; } ``` diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md index fa654171b5a71..cb9b1989cb163 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md @@ -165,15 +165,17 @@ func minSwaps(nums []int) int { ```ts function minSwaps(nums: number[]): number { - const k = nums.reduce((a, b) => a + b, 0); - let cnt = nums.slice(0, k).reduce((a, b) => a + b, 0); - let mx = cnt; const n = nums.length; - for (let i = k; i < n + k; ++i) { - cnt += nums[i % n] - nums[(i - k + n) % n]; - mx = Math.max(mx, cnt); + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); } - return k - mx; + + return min; } ``` diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.ts b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.ts index 6c616343055a4..6164515eb70cf 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.ts +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.ts @@ -1,11 +1,13 @@ function minSwaps(nums: number[]): number { - const k = nums.reduce((a, b) => a + b, 0); - let cnt = nums.slice(0, k).reduce((a, b) => a + b, 0); - let mx = cnt; const n = nums.length; - for (let i = k; i < n + k; ++i) { - cnt += nums[i % n] - nums[(i - k + n) % n]; - mx = Math.max(mx, cnt); + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); } - return k - mx; + + return min; } From 08068d6dcd7f8fb6e655f4ad50b18abb51647616 Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 2 Aug 2024 12:19:53 +0300 Subject: [PATCH 2/6] feat: add js solution to lc problem: No.2134 --- .../README.md | 18 ++++++++++++++++++ .../README_EN.md | 18 ++++++++++++++++++ .../Solution.js | 13 +++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.js diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index d149bcb351fc2..dcc6f94908ade 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -177,6 +177,24 @@ function minSwaps(nums: number[]): number { } ``` +#### JavaScript + +```js +function minSwaps(nums) { + const n = nums.length; + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); + } + + return min; +} +``` + #### Rust ```rust diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md index cb9b1989cb163..0135905e1eeaa 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md @@ -179,6 +179,24 @@ function minSwaps(nums: number[]): number { } ``` +#### JavaScript + +```ts +function minSwaps(nums) { + const n = nums.length; + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); + } + + return min; +} +``` + #### Rust ```rust diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.js b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.js new file mode 100644 index 0000000000000..7865a1b13492a --- /dev/null +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution.js @@ -0,0 +1,13 @@ +function minSwaps(nums) { + const n = nums.length; + const k = nums.reduce((a, b) => a + b, 0); + let cnt = k - nums.slice(0, k).reduce((a, b) => a + b, 0); + let min = cnt; + + for (let i = k; i < n + k; i++) { + cnt += nums[i - k] - nums[i % n]; + min = Math.min(min, cnt); + } + + return min; +} From 0af9603bd04583c8d7f30d3a05ef91e1a1add3de Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 2 Aug 2024 19:38:18 +0300 Subject: [PATCH 3/6] feat: add ts solution to lc problem: No.2134 --- .../README.md | 36 +++++++++++++++++++ .../README_EN.md | 36 +++++++++++++++++++ .../Solution2.ts | 21 +++++++++++ 3 files changed, 93 insertions(+) create mode 100644 solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.ts diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index dcc6f94908ade..6536f466b8f86 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -242,4 +242,40 @@ public class Solution { + + +### Solution 2: Prefix Sum + + + +#### TypeScript + +```ts +function minSwaps(nums: number[]): number { + const n = nums.length; + + const getMin = (x: 0 | 1) => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +}; +``` + + + + + diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md index 0135905e1eeaa..e8d9802336d0d 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md @@ -244,4 +244,40 @@ public class Solution { + + +### Solution 2: Prefix Sum + + + +#### TypeScript + +```ts +function minSwaps(nums: number[]): number { + const n = nums.length; + + const getMin = (x: 0 | 1) => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +}; +``` + + + + + diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.ts b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.ts new file mode 100644 index 0000000000000..6d83640ff8898 --- /dev/null +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.ts @@ -0,0 +1,21 @@ +function minSwaps(nums: number[]): number { + const n = nums.length; + + const getMin = (x: 0 | 1) => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +} From bce4cf5f6b18b244a7189bdbbbb1c2d7572ea19d Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 2 Aug 2024 19:42:27 +0300 Subject: [PATCH 4/6] feat: add js solution to lc problem: No.2134 --- .../README.md | 26 +++++++++++++++++++ .../README_EN.md | 26 +++++++++++++++++++ .../Solution2.js | 21 +++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.js diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index 6536f466b8f86..78f42d4afd7c4 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -274,6 +274,32 @@ function minSwaps(nums: number[]): number { }; ``` +#### JavaScript + +```js +function minSwaps(nums) { + const n = nums.length; + + const getMin = x => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +} +``` + diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md index e8d9802336d0d..d531d0cb078f9 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md @@ -276,6 +276,32 @@ function minSwaps(nums: number[]): number { }; ``` +#### JavaScript + +```js +function minSwaps(nums) { + const n = nums.length; + + const getMin = x => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +} +``` + diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.js b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.js new file mode 100644 index 0000000000000..2e2f0cb166eda --- /dev/null +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/Solution2.js @@ -0,0 +1,21 @@ +function minSwaps(nums) { + const n = nums.length; + + const getMin = x => { + const prefixSum = Array(n + 1).fill(0); + for (let i = 1; i <= n; i++) { + prefixSum[i] = prefixSum[i - 1] + (nums[i - 1] === x); + } + + const length = prefixSum[n]; + let ans = Number.POSITIVE_INFINITY; + for (let l = 0, r = length; r <= n; l++, r++) { + const min = length - (prefixSum[r] - prefixSum[l]); + ans = Math.min(ans, min); + } + + return ans; + }; + + return Math.min(getMin(0), getMin(1)); +} From bc2b2e47990b35d04382999013412afaa349e4f0 Mon Sep 17 00:00:00 2001 From: rain84 Date: Fri, 2 Aug 2024 16:43:25 +0000 Subject: [PATCH 5/6] style: format code and docs with prettier --- .../2134.Minimum Swaps to Group All 1's Together II/README.md | 2 +- .../README_EN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index 78f42d4afd7c4..6342a96863283 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -271,7 +271,7 @@ function minSwaps(nums: number[]): number { }; return Math.min(getMin(0), getMin(1)); -}; +} ``` #### JavaScript diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md index d531d0cb078f9..56ec6271d38a0 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README_EN.md @@ -273,7 +273,7 @@ function minSwaps(nums: number[]): number { }; return Math.min(getMin(0), getMin(1)); -}; +} ``` #### JavaScript From 38d6cd330db5d010bfc4e926ce1e99648940dbc9 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Tue, 3 Sep 2024 19:32:06 +0800 Subject: [PATCH 6/6] Update README.md --- .../2134.Minimum Swaps to Group All 1's Together II/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md index 6342a96863283..995937ce1105a 100644 --- a/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md +++ b/solution/2100-2199/2134.Minimum Swaps to Group All 1's Together II/README.md @@ -244,7 +244,7 @@ public class Solution { -### Solution 2: Prefix Sum +### 方法二:前缀和