中等
给你两个长度为 n 的整数数组 nums1 和 nums2。你可以对 nums1 执行任意次下述的 拆分合并操作:
- 选择一个子数组
nums1[L..R]。 - 移除该子数组,留下前缀
nums1[0..L-1](如果L = 0则为空)和后缀nums1[R+1..n-1](如果R = n - 1则为空)。 - 将移除的子数组(按原顺序)重新插入到剩余数组的 任意 位置(即,在任意两个元素之间、最开始或最后面)。
返回将 nums1 转换为 nums2 所需的 最少拆分合并操作 次数。
示例 1:
输入: nums1 = [3,1,2], nums2 = [1,2,3]
输出: 1
解释:
- 拆分出子数组
[3](L = 0,R = 0);剩余数组为[1,2]。 - 将
[3]插入到末尾;数组变为[1,2,3]。
示例 2:
输入: nums1 = [1,1,2,3,4,5], nums2 = [5,4,3,2,1,1]
输出: 3
解释:
- 移除下标
0 - 2处的[1,1,2];剩余[3,4,5];将[1,1,2]插入到位置2,得到[3,4,1,1,2,5]。 - 移除下标
1 - 3处的[4,1,1];剩余[3,2,5];将[4,1,1]插入到位置3,得到[3,2,5,4,1,1]。 - 移除下标
0 - 1处的[3,2];剩余[5,4,1,1];将[3,2]插入到位置2,得到[5,4,3,2,1,1]。
提示:
2 <= n == nums1.length == nums2.length <= 6-105 <= nums1[i], nums2[i] <= 105nums2是nums1的一个 排列。