mirror of
https://github.com/TheAlgorithms/Java.git
synced 2026-03-13 08:40:43 +08:00
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:
@@ -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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user