leetcode 1806. 还原排列的最少操作步数
给你一个偶数 n ,已知存在一个长度为 n 的排列 perm ,其中 perm[i] == i(下标 从 0 开始 计数)。
一步操作中,你将创建一个新数组 arr ,对于每个 i :
- 如果 i % 2 == 0 ,那么 arr[i] = perm[i / 2]
- 如果 i % 2 == 1 ,那么 arr[i] = perm[n / 2 + (i - 1) / 2]。
然后将 arr 赋值给 perm 。
要想使 perm 回到排列初始值,至少需要执行多少步操作?返回最小的 非零 操作步数。
示例1:
输入: n = 2
输出: 1
解释: 最初,perm = [0,1];第 1 步操作后,perm = [0,1];所以,仅需执行 1 步操作
示例2:
输入: n = 4
输出: 2
解释: 最初,perm = [0,1,2,3];第 1 步操作后,perm = [0,2,1,3];第 2 步操作后,perm = [0,1,2,3];所以,仅需执行 2 步操作
示例3:
输入: n = 6
输出: 4
提示:
- 2 <= n <= 1000
- n 是一个偶数
方法:模拟
思路:根据题目进行模拟。
运行数据:执行用时:113 ms,内存消耗:38.2 MB
复杂度分析:
- 时间复杂度:O(n^2)。
- 空间复杂度:O(n)。
1 | // LeetCode指定调用方法 |
学习所得,资料、图片部分来源于网络,如有侵权,请联系本人删除。
才疏学浅,若有错误或不当之处,可批评指正,还请见谅!