Balanced Mod Subarrays
You are monitoring a long timeline of events represented as integers. Each number reflects a recorded outcome whose remainder modulo 3 indicates the type of event: remainder 0 marks calibration, remainder 1 signals exploration, and remainder 2 captures stabilization. Your goal is to uncover every contiguous segment where these three event types appear in perfect balance, meaning each remainder class occurs the same number of times within that subarray. Instead of returning a single best segment, you must gather all maximal segments that satisfy the condition—segments that cannot be extended left or right without breaking the balance—and return them as a collection.
Imagine a research team laying out color-coded cards across a table. Blue cards correspond to remainder 0, green to remainder 1, and gold to remainder 2. The team wants to catalog every contiguous stripe where the colors repeat in equal cadence, forming a perfectly balanced pattern. If a stripe can expand by one card on either side while keeping the balance, it is not considered maximal. You must scan the entire table, identify each maximal balanced stripe, and return them all as separate collections within a larger list.
Edge cases are important. If the original array never achieves balance, return an empty list. Negative numbers belong to remainder groups based on their modulo result. Arrays with fewer than three elements can only form balanced subarrays if they include exactly one element from each remainder class. The result should present each qualifying subarray in its original order, enabling analysts to trace where balanced behavior emerged throughout the experiment.
Example 1:
Input: nums = [0,1,2,3,4,5]
Output: [[0,1,2,3,4,5]]
Explanation: The entire array has two values from each remainder class and is maximal.
Example 2:
Input: nums = [1,4,7,10]
Output: []
Explanation: All values share the same remainder, so no balanced subarray exists.
Example 3:
Input: nums = [3,6,9,2,5,8,1,4,7,12,15,18]
Output: [[3,6,9,2,5,8,1,4,7],[2,5,8,1,4,7,12,15,18]]
Explanation: Two maximal balanced subarrays cover the timeline; neither can be extended without breaking the balance.
Related Problems
No related problems found
Comments (0)
Join the Discussion
Share your thoughts, ask questions, or help others with this problem.
