You are given two integer arrays nums1 and nums0, each of size n.
nums1[i] represents the number of '1's in the ith segment.nums0[i] represents the number of '0's in the ith segment.For each index i, construct a binary segment consisting of:
nums1[i] occurrences of '1' followed bynums0[i] occurrences of '0'.You may rearrange the order of these segments in any way. After rearranging, concatenate all segments to form a single binary string.
Return the maximum possible integer value of the concatenated binary string.
Since the result can be very large, return the answer modulo 109 + 7.
Example 1:
Input: nums1 = [1,2], nums0 = [1,0]
Output: 14
Explanation:
nums1[0] = 1 and nums0[0] = 1, so the segment formed is "10".nums1[1] = 2 and nums0[1] = 0, so the segment formed is "11"."11" followed by "10" produces the binary string "1110"."1110" has value 14 which is the maximum possible value.Example 2:
Input: nums1 = [3,1], nums0 = [0,3]
Output: 120
Explanation:
nums1[0] = 3 and nums0[0] = 0, so the segment formed is "111".nums1[1] = 1 and nums0[1] = 3, so the segment formed is "1000"."111" followed by "1000" produces the binary string "1111000"."1111000" has value 120 which is the maximum possible value.
Constraints:
1 <= n == nums1.length == nums0.length <= 1050 <= nums1[i], nums0[i] <= 104nums1[i] + nums0[i] > 0nums1 and nums0 does not exceed 2 * 105.Problem Overview: You are given multiple binary segments and must concatenate them in some order to produce the largest possible binary value. The task is essentially choosing the best ordering of segments so the final concatenated binary string represents the maximum decimal value.
Approach 1: Brute Force Permutations (O(n! * k) time, O(n) space)
Generate every possible ordering of the binary segments using permutations. For each permutation, concatenate the segments and compute the resulting value (or compare the binary strings directly). Track the maximum result seen so far. This approach works for very small n but quickly becomes infeasible because the number of permutations grows factorially. It is mainly useful for understanding the problem and validating test cases.
Approach 2: Greedy Sorting by Concatenation Order (O(n log n * k) time, O(n) space)
The key insight: for two segments a and b, the better order is whichever produces a larger binary string between a + b and b + a. If a + b is larger, place a before b; otherwise place b first. Sorting all segments using this custom comparator produces the optimal global order. The comparison works because maximizing the most significant bits of the final concatenation dominates the value. Implement the comparator with string concatenation and lexicographic comparison. This pattern is similar to the classic “largest number by concatenation” problem and is naturally implemented with sorting and greedy reasoning.
Approach 3: Bit-Length Aware Comparison (O(n log n) comparisons, O(n) space)
Instead of building large intermediate strings repeatedly, treat each segment as a binary number with a known bit length. When comparing a before b versus b before a, compute the shifted values: (a << len(b)) | b and (b << len(a)) | a. Compare these two numbers to determine order. This reduces temporary string allocations and highlights the bit-level behavior of the concatenation. The technique relies on concepts from bit manipulation and works well when segment lengths are manageable.
Recommended for interviews: The greedy sorting comparator is what interviewers typically expect. Starting with the brute force permutation shows you understand the search space, but recognizing the a+b vs b+a ordering rule demonstrates the key greedy insight and reduces the complexity to O(n log n), which is scalable for large inputs.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| Brute Force Permutations | O(n! * k) | O(n) | Very small inputs or verifying correctness of other approaches |
| Greedy Sort by Concatenation (a+b vs b+a) | O(n log n * k) | O(n) | General case; standard optimal solution used in interviews |
| Bit-Length Aware Comparator | O(n log n) | O(n) | When avoiding large string concatenations and using numeric bit operations |
Practice Maximum Value of Concatenated Binary Segments with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor