困难
给你两个整数数组 nums1 和 nums0,每个数组的大小均为 n。
nums1[i]表示第i个片段中'1'的数量。nums0[i]表示第i个片段中'0'的数量。
对于每个下标 i,构造一个由以下组成的二进制片段:
nums1[i]个'1',后跟nums0[i]个'0'。
你可以以任何方式 重新排列 这些 片段 的先后顺序。重新排列后,将所有片段 连接 起来形成一个单一的二进制字符串。
返回连接后的二进制字符串可能表示的 最大 整数值。
由于结果可能非常大,请返回对 109 + 7 取余 后的结果。
示例 1:
输入: nums1 = [1,2], nums0 = [1,0]
输出: 14
解释:
- 在下标 0 处,
nums1[0] = 1且nums0[0] = 1,因此形成的片段为"10"。 - 在下标 1 处,
nums1[1] = 2且nums0[1] = 0,因此形成的片段为"11"。 - 将片段重新排序为
"11"后跟"10",生成二进制字符串"1110"。 - 二进制数
"1110"的值为 14,这是可能的最大值。
示例 2:
输入: nums1 = [3,1], nums0 = [0,3]
输出: 120
解释:
- 在下标 0 处,
nums1[0] = 3且nums0[0] = 0,因此形成的片段为"111"。 - 在下标 1 处,
nums1[1] = 1且nums0[1] = 3,因此形成的片段为"1000"。 - 将片段重新排序为
"111"后跟"1000",生成二进制字符串"1111000"。 - 二进制数
"1111000"的值为 120,这是可能的最大值。
提示:
1 <= n == nums1.length == nums0.length <= 1050 <= nums1[i], nums0[i] <= 104nums1[i] + nums0[i] > 0nums1和nums0中所有元素的总和不超过 2 * 105。