Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 2369697

Browse files
add 2134
1 parent 92e72bd commit 2369697

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ _If you like this project, please leave me a star._ ★
88

99
| # | Title | Solutions | Video | Difficulty | Tag
1010
|-----|----------------|---------------|--------|-------------|-------------
11+
|2134|[Minimum Swaps to Group All 1's Together II](https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together-ii/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2134.java) ||Medium||
1112
|2133|[Check if Every Row and Column Contains All Numbers](https://leetcode.com/problems/check-if-every-row-and-column-contains-all-numbers/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2133.java) ||Easy||
1213
|2130|[Maximum Twin Sum of a Linked List](https://leetcode.com/problems/maximum-twin-sum-of-a-linked-list/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2130.java) ||Medium||
1314
|2129|[Capitalize the Title](https://leetcode.com/problems/capitalize-the-title/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2129.java) ||Easy||
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class _2134 {
7+
public static class Solution1 {
8+
/**
9+
* Connect the original array with itself to simulate the circular property of this array.
10+
* Then use a sliding window to find the minimum swaps.
11+
*/
12+
public int minSwaps(int[] nums) {
13+
int ones = 0;
14+
List<Integer> list = new ArrayList<>();
15+
for (int num : nums) {
16+
ones += num;
17+
list.add(num);
18+
}
19+
for (int num : nums) {
20+
list.add(num);
21+
}
22+
int minSwaps = nums.length;
23+
int zeroes = 0;
24+
for (int left = 0, right = 0; right < list.size(); right++) {
25+
if (list.get(right) == 0) {
26+
zeroes++;
27+
}
28+
int len = right - left + 1;
29+
if (len < ones) {
30+
continue;
31+
} else if (len == ones) {
32+
minSwaps = Math.min(minSwaps, zeroes);
33+
} else {
34+
if (list.get(left) == 0) {
35+
zeroes--;
36+
}
37+
left++;
38+
minSwaps = Math.min(minSwaps, zeroes);
39+
}
40+
}
41+
return minSwaps;
42+
}
43+
}
44+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.solutions._2134;
4+
import org.junit.BeforeClass;
5+
import org.junit.Test;
6+
7+
import static org.junit.Assert.assertEquals;
8+
9+
public class _2134Test {
10+
private static _2134.Solution1 solution1;
11+
private static int[] nums;
12+
13+
@BeforeClass
14+
public static void setup() {
15+
solution1 = new _2134.Solution1();
16+
}
17+
18+
@Test
19+
public void test1() {
20+
nums = new int[]{0, 1, 0, 1, 1, 0, 0};
21+
assertEquals(1, solution1.minSwaps(nums));
22+
}
23+
24+
@Test
25+
public void test2() {
26+
nums = new int[]{0, 1, 1, 1, 0, 0, 1, 1, 0};
27+
assertEquals(2, solution1.minSwaps(nums));
28+
}
29+
30+
@Test
31+
public void test3() {
32+
nums = new int[]{1, 1, 0, 0, 1};
33+
assertEquals(0, solution1.minSwaps(nums));
34+
}
35+
36+
}

0 commit comments

Comments
 (0)