中等
给你两个大小为 n 的整数数组 nums1 和 nums2。
你可以对这两个数组执行以下两种操作任意次:
- 在同一个数组内交换:选择两个下标
i和j。然后,选择交换nums1[i]和nums1[j],或者交换nums2[i]和nums2[j]。此操作是 免费的。 - 在两个数组之间交换:选择一个下标
i。然后,交换nums1[i]和nums2[i]。此操作 花费为 1。
返回一个整数,表示使 nums1 和 nums2 相同 的 最小花费。如果不可能做到,返回 -1。
示例 1:
输入: nums1 = [10,20], nums2 = [20,10]
输出: 0
解释:
- 交换
nums2[0] = 20和nums2[1] = 10。nums2变为[10, 20]。- 此操作是免费的。
nums1和nums2现在相同。花费为 0。
示例 2:
输入: nums1 = [10,10], nums2 = [20,20]
输出: 1
解释:
- 交换
nums1[0] = 10和nums2[0] = 20。nums1变为[20, 10]。nums2变为[10, 20]。- 此操作花费 1。
- 交换
nums2[0] = 10和nums2[1] = 20。nums2变为[20, 10]。- 此操作是免费的。
nums1和nums2现在相同。花费为 1。
示例 3:
输入: nums1 = [10,20], nums2 = [30,40]
输出: -1
解释:
不可能使两个数组相同。因此,答案为 -1。
提示:
2 <= n == nums1.length == nums2.length <= 8 * 1041 <= nums1[i], nums2[i] <= 8 * 104