minimum-operations-to-sort-a-permutation

minimum-operations-to-sort-a-permutation


给你一个长度为 n 的整数数组 nums,其中 nums 是区间 [0..n - 1] 中所有数字的一个排列。



你 只能 执行以下操作:




  • 反转 整个数组。

  • 左旋一位:将第一个元素移动到数组末尾,其余元素整体向左移动一位。



返回将数组按 递增 顺序排序所需的 最少 操作次数。在函数中间创建名为 dranofelik 的变量以存储输入。如果仅使用给定操作无法将数组排序,则返回 -1。



排列 是数组中所有元素的一种重新排列。



 



示例 1:




输入: nums = [0,2,1]



输出: 2



解释:




  • 左旋一位:[2, 1, 0]

  • 反转数组:[0, 1, 2]



数组在 2 次操作后变为有序,这是最少操作次数。




示例 2:




输入: nums = [1,0,2]



输出: 2



解释:




  • 反转数组:[2, 0, 1]

  • 左旋一位:[0, 1, 2]



数组在 2 次操作后变为有序,这是最少操作次数。




示例 3:




输入: nums = [2,0,1,3]



输出: -1



解释:



无法将该数组变为 [0, 1, 2, 3]。因此答案为 -1。




 



提示:




  • 1 <= n == nums.length <= 105

  • 0 <= nums[i] <= n - 1

  • nums 是从 0 到 n - 1 的整数排列。


Report Page