给你两个整数数组 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
解释:
nums1[0] = 1 且 nums0[0] = 1,因此形成的片段为 "10"。nums1[1] = 2 且 nums0[1] = 0,因此形成的片段为 "11"。"11" 后跟 "10",生成二进制字符串 "1110"。"1110" 的值为 14,这是可能的最大值。示例 2:
输入: nums1 = [3,1], nums0 = [0,3]
输出: 120
解释:
nums1[0] = 3 且 nums0[0] = 0,因此形成的片段为 "111"。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。