Maximize Active Section with Trade II - Problem
You are given a binary string s of length n, where:
'1'represents an active section'0'represents an inactive section
You can perform at most one trade to maximize the number of active sections in s. In a trade, you:
- Convert a contiguous block of
'1's that is surrounded by'0's to all'0's - Afterward, convert a contiguous block of
'0's that is surrounded by'1's to all'1's
Additionally, you are given a 2D array queries, where queries[i] = [li, ri] represents a substring s[li...ri].
For each query, determine the maximum possible number of active sections in s after making the optimal trade on the substring s[li...ri].
Return an array answer, where answer[i] is the result for queries[i].
Note: For each query, treat s[li...ri] as if it is augmented with a '1' at both ends, forming t = '1' + s[li...ri] + '1'. The augmented '1's do not contribute to the final count. The queries are independent of each other.
Input & Output
Example 1 — Basic Trade
$
Input:
s = "10110", queries = [[1,3]]
›
Output:
[3]
💡 Note:
Query [1,3] gives substring "011". Augmented: "1011". We can trade the '1' block (position 0) with '00' block (positions 1-2) to get "100" → 3 ones total in original string.
Example 2 — Multiple Queries
$
Input:
s = "1100", queries = [[0,1],[2,3]]
›
Output:
[2,2]
💡 Note:
Query [0,1]: "11" → augmented "111", no beneficial trade. Query [2,3]: "00" → augmented "100", can convert to "111" for 2 total ones.
Example 3 — No Trade Needed
$
Input:
s = "111", queries = [[0,2]]
›
Output:
[3]
💡 Note:
All positions are already '1', no trade can improve the count.
Constraints
- 1 ≤ s.length ≤ 105
- s[i] is either '0' or '1'
- 1 ≤ queries.length ≤ 105
- 0 ≤ li ≤ ri < s.length
Visualization
Tap to expand
Understanding the Visualization
1
Input
Binary string s and query ranges
2
Process
For each query, augment substring and find optimal trade
3
Output
Array of maximum active sections for each query
Key Takeaway
🎯 Key Insight: The optimal trade always involves swapping blocks to maximize the net gain of '1's in the query range
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code