首页 > 其他分享 >[leetcode每日一题]1.9

[leetcode每日一题]1.9

时间:2023-01-09 23:32:15浏览次数:65  
标签:arr cur 示例 res 每日 1.9 perm 操作 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​​​​​​​ 是一个偶数

Solution

impl Solution {
pub fn reinitialize_permutation(n: i32) -> i32 {
// 考察1的位置
// 经过找规律可以发现答案就是满足2^(res-1)=k(n-1)+1的最小res
// 但是这个res可能太大了,大到几百
// 所以只能用同余做
let mut cur = 1;
let mut res = 0;
if n == 2 {
return 1;
}
while true {
cur *= 2;
res += 1;
if cur % (n-1) == 1 {
return res;
}
cur = cur%(n-1);
}
114514
}
}

当然,也可以直接模拟这个数组操作,这个复杂度是允许的。


标签:arr,cur,示例,res,每日,1.9,perm,操作,leetcode
From: https://blog.51cto.com/u_15763108/5998799

相关文章

  • 代码随想录算法训练营第八天LeetCode28, 459
    代码随想录算法训练营第八天|LeetCode28,459Leetcode28找出字符串中第一个匹配项的下标题目链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence......
  • 1.9 构造
    B.FindTheArray题意:给出序列a,S为a的所有元素之和。要求构造出一个序列b,使b中相邻元素为倍数关系,且b中元素与a中元素差值不能超过S/2.思路:要求构造倍数关系,那么利用a元......
  • 1.9寒假集训-进阶训练赛(五)A-M题解
    前五题网上都有不写了需要注意的是第四题是给定密钥和密文要把它加密算是一个逆过程看了半天都没读懂样例 第六题应该也有但是我写一下因为学校oj这边空间给的是1......
  • leetcode-234-easy
    PalindromeLinkedListGiventheheadofasinglylinkedlist,returntrueifitisapalindromeorfalseotherwise.Example1:Input:head=[1,2,2,1]Outpu......
  • leetcode-171-easy
    ExcelSheetColumnNumberGivenastringcolumnTitlethatrepresentsthecolumntitleasappearsinanExcelsheet,returnitscorrespondingcolumnnumber.Fo......
  • leetcode-225-easy
    ImplementStackusingQueuesImplementalast-in-first-out(LIFO)stackusingonlytwoqueues.Theimplementedstackshouldsupportallthefunctionsofanorm......
  • 2023.1.9周报
    本周总结:《算法竞赛》5.3、5.4,《算法竞赛进阶指南》0x56、0x5C、靠队友录屏白嫖了namomocamp的内容。大方向:动态规划小专题:数位DP、状压DP题目完成情况:div2、abc各......
  • 闲话 23.1.9
    闲话场上看T330min后得到了一个Trie分裂合并+手写平衡树优化珂朵莉树的巨大恶心做法感性证了一波复杂度是\(O(n\logn)\)的然后“如果正解真和这个sb做法......
  • leetcode简单:[1, 9, 13, 14, 20, 21, 26, 27, 35, 58]
    目录1.两数之和9.回文数13.罗马数字转整数14.最长公共前缀20.有效的括号21.合并两个有序链表26.删除有序数组中的重复项27.移除元素35.搜索插入位置58.最后一个......
  • leetcode简单:[66, 67, 70, 83, 121, 141, 160, 169, ,206, 338]
    目录66.加一67.二进制求和70.爬楼梯83.删除排序链表中的重复元素121.买卖股票的最佳时机141.环形链表160.相交链表169.多数元素206.反转链表338.比特位计数66.......