给你两个长度为 n 的整数数组 nums 和 forbidden。
你可以执行以下操作任意次(包括零次):
i 和 j,然后交换 nums[i] 和 nums[j]。返回使得对于每个下标 i,nums[i] 不等于 forbidden[i] 所需的 最小 交换次数。如果无论如何都无法满足条件,返回 -1。
示例 1:
输入: nums = [1,2,3], forbidden = [3,2,1]
输出: 1
解释:
一种最优的交换方案:
nums 中下标 i = 0 和 j = 1,交换它们,得到 nums = [2, 1, 3]。i,nums[i] 都不等于 forbidden[i]。示例 2:
输入: nums = [4,6,6,5], forbidden = [4,6,5,5]
输出: 2
解释:
一种最优的交换方案:
nums 中下标 i = 0 和 j = 2,交换它们,得到 nums = [6, 6, 4, 5]。nums 中下标 i = 1 和 j = 3,交换它们,得到 nums = [6, 5, 4, 6]。i,nums[i] 都不等于 forbidden[i]。示例 3:
输入: nums = [7,7], forbidden = [8,7]
输出: -1
解释:
无法通过任何交换使得 nums[i] 对于所有下标 i 都不等于 forbidden[i]。
示例 4:
输入: nums = [1,2], forbidden = [2,1]
输出: 0
解释:
无需交换,因为对于每个下标 i,nums[i] 已经不等于 forbidden[i],因此答案是 0。
提示:
1 <= n == nums.length == forbidden.length <= 1051 <= nums[i], forbidden[i] <= 109