给你两个长度为 n 的整数数组 nums 和 target,其中 nums[i] 是下标 i 处的当前值,而 target[i] 是下标 i 处的期望值。
你可以执行以下操作任意次数(包括零次):
xnums[i] == x(如果一个段在保持所有值等于 x 的情况下无法向左或向右延伸,则该段是 极大 的)[l, r],同时 进行更新:
nums[l] = target[l], nums[l + 1] = target[l + 1], ..., nums[r] = target[r]返回使 nums 等于 target 所需的 最小 操作次数。
示例 1:
输入: nums = [1,2,3], target = [2,1,3]
输出: 2
解释:
x = 1:极大段 [0, 0] 被更新 -> nums 变为 [2, 2, 3]x = 2:极大段 [0, 1] 被更新(nums[0] 保持为 2,nums[1] 变为 1) -> nums 变为 [2, 1, 3]nums 转换为 target 需要 2 次操作。示例 2:
输入: nums = [4,1,4], target = [5,1,4]
输出: 1
解释:
x = 4:极大段 [0, 0] 和 [2, 2] 被更新(nums[2] 保持为 4) -> nums 变为 [5, 1, 4]nums 转换为 target 需要 1 次操作。示例 3:
输入: nums = [7,3,7], target = [5,5,9]
输出: 2
解释:
x = 7:极大段 [0, 0] 和 [2, 2] 被更新 -> nums 变为 [5, 3, 9]x = 3:极大段 [1, 1] 被更新 -> nums 变为 [5, 5, 9]nums 转换为 target 需要 2 次操作。
提示:
1 <= n == nums.length == target.length <= 1051 <= nums[i], target[i] <= 105