LeetCode--2321. 拼接数组的最大分数
最后更新于
最后更新于
给你两个下标从 0 开始的整数数组
nums1
和nums2
,长度都是n
。你可以选择两个整数
left
和right
,其中0 <= left <= right < n
,接着 交换 两个子数组nums1[left...right]
和nums2[left...right]
。
例如,设
nums1 = [1,2,3,4,5]
和nums2 = [11,12,13,14,15]
,整数选择left = 1
和right = 2
,那么nums1
会变为[1,***12\*,\*13\***,4,5]
而nums2
会变为[11,***2,3***,14,15]
。你可以选择执行上述操作 一次 或不执行任何操作。
数组的 分数 取
sum(nums1)
和sum(nums2)
中的最大值,其中sum(arr)
是数组arr
中所有元素之和。返回 可能的最大分数 。
子数组 是数组中连续的一个元素序列。
arr[left...right]
表示子数组包含nums
中下标left
和right
之间的元素**(含** 下标left
和right
对应元素**)**。
很简单,直接计算两个数组的差值,然后算出差值的最大子数组和以及最小子数组和,随后与我们的两个数组和计算即可:
最后的一步,我们需要交换数组以获得最大值,则交换之后,我们的 nums1 可以得到的最大值则是 nums 减去差值为负数时候的最大值,而 nums2 这是加上差值为整数时候的最大值。