From 79db7a329c6e3b71b9585ff7e3729f296b71662b Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Fri, 2 Aug 2024 13:18:13 +0200 Subject: [PATCH] =?UTF-8?q?java:=20add=20=C2=AB2134.=20Minimum=20Swaps=20t?= =?UTF-8?q?o=20Group=20All=201's=20Together=20II=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- ...mum-swaps-to-group-all-1s-together-ii.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 java/minimum-swaps-to-group-all-1s-together-ii.java diff --git a/java/minimum-swaps-to-group-all-1s-together-ii.java b/java/minimum-swaps-to-group-all-1s-together-ii.java new file mode 100644 index 0000000..25dab83 --- /dev/null +++ b/java/minimum-swaps-to-group-all-1s-together-ii.java @@ -0,0 +1,27 @@ +class Solution { + private int countOnes(int[] nums, int upperBound) { + var count = 0; + + for (int i = 0; i < upperBound; ++i) { + if (nums[i] == 1) { + ++count; + } + } + + return count; + } + + public int minSwaps(int[] nums) { + var ones = countOnes(nums, nums.length); + var inWindow = countOnes(nums, ones); + + var minSwaps = nums.length; + for (int i = 0; i < nums.length; ++i) { + inWindow += nums[(i + ones) % nums.length] - nums[i]; + + minSwaps = Math.min(minSwaps, ones - inWindow); + } + + return minSwaps; + } +}