You are given an integer array nums and an integer maxC.
A subarray is called stable if the highest common factor (HCF) of all its elements is greater than or equal to 2.
The stability factor of an array is defined as the length of its longest stable subarray.
You may modify at most maxC elements of the array to any integer.
Return the minimum possible stability factor of the array after at most maxC modifications. If no stable subarray remains, return 0.
Note:
HCF([x]) = x.
Example 1:
Input: nums = [3,5,10], maxC = 1
Output: 1
Explanation:
[5, 10] has HCF = 5, which has a stability factor of 2.maxC = 1, one optimal strategy is to change nums[1] to 7, resulting in nums = [3, 7, 10].HCF >= 2. Thus, the minimum possible stability factor is 1.Example 2:
Input: nums = [2,6,8], maxC = 2
Output: 1
Explanation:
[2, 6, 8] has HCF = 2, which has a stability factor of 3.maxC = 2, one optimal strategy is to change nums[1] to 3 and nums[2] to 5, resulting in nums = [2, 3, 5].HCF >= 2. Thus, the minimum possible stability factor is 1.Example 3:
Input: nums = [2,4,9,6], maxC = 1
Output: 2
Explanation:
[2, 4] with HCF = 2 and stability factor of 2.[9, 6] with HCF = 3 and stability factor of 2.maxC = 1, the stability factor of 2 cannot be reduced due to two separate stable subarrays. Thus, the minimum possible stability factor is 2.
Constraints:
1 <= n == nums.length <= 1051 <= nums[i] <= 1090 <= maxC <= nProblem Overview: You are given an array and must compute the minimum possible stability factor such that the array satisfies a stability condition defined over its elements. The goal is to minimize this factor while ensuring the array remains valid according to the constraints. The challenge comes from large value ranges and the need to efficiently validate candidate stability values.
Approach 1: Brute Force Stability Check (O(n * V), Space O(1))
The most direct approach is to try every possible stability factor from the smallest feasible value up to the maximum element range. For each candidate factor, iterate through the array and verify whether the stability condition holds for all elements or segments. This involves repeated scans of the array and recomputation of constraints such as pair differences or divisibility relationships. While straightforward, this approach becomes infeasible when the value range V is large.
Approach 2: Binary Search + Greedy Validation (O(n log V), Space O(1))
A key observation is that if a stability factor S works, any larger factor will also work. This monotonic property allows you to apply binary search on the answer. For each candidate value, perform a greedy validation pass through the array. The validation checks whether the array can satisfy the stability constraint using local adjustments or allowed operations while keeping differences within the candidate bound. Each check runs in linear time, so the total complexity becomes O(n log V), which is efficient for large inputs.
Approach 3: Binary Search with Segment Tree Optimization (O(n log n log V), Space O(n))
When validation requires frequent range queries such as computing minimums, maximums, or gcd values across subarrays, a segment tree can speed up checks. Preprocess the array into a segment tree so each query runs in O(log n). During the binary search feasibility test, query ranges to verify whether the stability constraint holds across segments. This approach trades extra memory for faster constraint checks when the validation logic depends on aggregated range information.
Approach 4: Greedy + Number Theory Observations (O(n log V), Space O(1))
Some variations of the stability constraint rely on divisibility or gcd relationships between elements. Using insights from number theory, you can simplify validation by computing gcd transitions or allowable reductions directly while scanning the array. The greedy step keeps track of the minimal feasible value for each position while ensuring the candidate stability bound is not violated.
Recommended for interviews: Binary search on the answer combined with a greedy feasibility check is the approach most interviewers expect. The brute force approach demonstrates understanding of the constraint being tested, but the binary search solution shows you recognize the monotonic structure of the problem and can reduce the complexity from linear-in-range to logarithmic-in-range.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| Brute Force Stability Check | O(n * V) | O(1) | Small value ranges where testing every factor is feasible |
| Binary Search + Greedy Validation | O(n log V) | O(1) | General case with monotonic feasibility condition |
| Binary Search + Segment Tree | O(n log n log V) | O(n) | When validation requires fast range queries |
| Greedy with Number Theory Insights | O(n log V) | O(1) | When stability constraints involve gcd or divisibility rules |
3605. Minimum Stability Factor of Array | Biweekly Contest 160 • Amit Dhyani • 949 views views
Watch 1 more video solutions →Practice Minimum Stability Factor of Array with our built-in code editor and test cases.
Practice on FleetCode