Add Count Nice Subarrays sliding using window algorithm (#7206)

* Add Count Nice Subarrays sliding window algorithm

* Add detailed comments and reference to CountNiceSubarrays

* Fix clang-format issues in CountNiceSubarrays

* Added extra edge cases

* changes made
This commit is contained in:
Tarunj Gupta
2026-01-10 21:02:19 +05:30
committed by GitHub
parent fe6066b332
commit 1644db2a34
2 changed files with 154 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
package com.thealgorithms.slidingwindow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CountNiceSubarraysTest {
@Test
void testExampleCase() {
int[] nums = {1, 1, 2, 1, 1};
assertEquals(2, CountNiceSubarrays.countNiceSubarrays(nums, 3));
}
@Test
void testAllEvenNumbers() {
int[] nums = {2, 4, 6, 8};
assertEquals(0, CountNiceSubarrays.countNiceSubarrays(nums, 1));
}
@Test
void testSingleOdd() {
int[] nums = {1};
assertEquals(1, CountNiceSubarrays.countNiceSubarrays(nums, 1));
}
@Test
void testMultipleChoices() {
int[] nums = {2, 2, 1, 2, 2, 1, 2};
assertEquals(6, CountNiceSubarrays.countNiceSubarrays(nums, 2));
}
@Test
void testTrailingEvenNumbers() {
int[] nums = {1, 2, 2, 2};
assertEquals(4, CountNiceSubarrays.countNiceSubarrays(nums, 1));
}
@Test
void testMultipleWindowShrinks() {
int[] nums = {1, 1, 1, 1};
assertEquals(3, CountNiceSubarrays.countNiceSubarrays(nums, 2));
}
@Test
void testEvensBetweenOdds() {
int[] nums = {2, 1, 2, 1, 2};
assertEquals(4, CountNiceSubarrays.countNiceSubarrays(nums, 2));
}
@Test
void testShrinkWithTrailingEvens() {
int[] nums = {2, 2, 1, 2, 2, 1, 2, 2};
assertEquals(9, CountNiceSubarrays.countNiceSubarrays(nums, 2));
}
}