首页 > 其他分享 >60. Permutation Sequence(难)

60. Permutation Sequence(难)

时间:2022-12-01 20:10:40浏览次数:32  
标签:index nums int Sequence 60 数组 Permutation fac round


​[1,2,3,…,n]​​ contains a total of n! unique permutations.

By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n

​"123"​​​​"132"​​​​"213"​​​​"231"​​​​"312"​​​​"321"​

n and k, return the kth

Note: Given n

参考​​Permutation Sequence -- LeetCode​​

思路是这样的,比如当前长度是n,我们知道每个相同的起始元素对应(n-1)!个permutation,也就是(n-1)!个permutation后会换一个起始元素。因此,只要当前的k进行(n-1)!取余,得到的数字就是当前剩余数组的index,如此就可以得到对应的元素。如此递推直到数组中没有元素结束。实现中我们要维护一个数组来记录当前的元素,每次得到一个元素加入结果数组,然后从剩余数组中移除。

class Solution {
public:
string getPermutation(int n, int k) {
k--;
vector<int> nums;
for (int i = 1; i <= n; i++){
nums.push_back(i);
}
int fac = 1;
for (int i = 2; i < n; i++){
fac *= i;
}
string res;
int round = n - 1;
while (round >= 0){
int index = k / fac;
k %= fac;
res += nums[index] + '0';
nums.erase(nums.begin()+index);
if (round){
fac /= round;
}
round--;
}
return res;
}
};



标签:index,nums,int,Sequence,60,数组,Permutation,fac,round
From: https://blog.51cto.com/u_15899184/5904038

相关文章

  • dblogin登陆数据库时报错ORA-04060
    问题描述:dblogin登陆数据库时报错ORA-04060,如下所示:oracle:11.2.0.4GGSCI(leo-11g-ogg)5>dbloginuseridogg,passwordogg2022-12-0112:19:49WARNINGOGG-25108Fail......
  • lintcode:Permutations
    Givenalistofnumbers,returnallpossiblepermutations.ChallengeDoitwithoutrecursion.1.递归classSolution{public:/***@paramnums:Alistofi......
  • lintcode: Permutations II
    Givenalistofnumberswithduplicatenumberinit.Findalluniquepermutations.可以见我的博文​​全排列实现​​classSolution{public:/***@paramnu......
  • VR手术培训是炒作?融资6600万美金的Osso VR并不同意
     “元宇宙的开拓者”是我们针对元宇宙的发展而设立的专栏,主要面向那些深挖元宇宙产业或者在元宇宙进行“淘金”的从业者,分享这些企业或者创业者们的故事,以独特的视角窥见那......
  • 深度剖析Patient 360 for Health创新,Salesforce继续深耕医疗领域
     11月初,Salesforce发布了Patient360forHealth创新,为医疗保健和生命科学公司提供节省成本的自动化、个性化智能和实时数据,以更高效地实现全面的患者成功和公平护理。......
  • IE主页被https://hao.360.cn/?a1004劫持,如何解决
    最近IE主页被https://hao.360.cn/?a1004劫持了,不管如何杀毒,更换主页地址,都是不行,包括306、火绒等工具,它就是那么的顽强,不让你更改。但是发现一个现象,那就是如果你在C:\Progr......
  • UT026010 Buffer pool was not set on WebSocketDeploymentInfo...
    UT026010:BufferpoolwasnotsetonWebSocketDeploymentInfo,thedefaultpoolwillbeused一、解决方案:在引入undertow包时剔除undertow-websockets-js包,启动无警......
  • LCD1602
    功能描述:  通过写入指令或数据,控制内部的驱动芯片,从而实现在LCD显示屏上显示字符串:\[{I\_❤LOVE❤\_BUAA!}\]\[{1952--2022}\]设计方案:  设计将以有限状态机......
  • 【杂谈】LCD1602液晶显示模块
      这几天弄单片机的课设,正好需要用到1602这个模块,简单整理一下,方便以后回忆。 前言  关于1602的读时序和写时序在网上可以轻易找到介绍,这里不做过多讲解,这里只讲解......
  • 云原生技术采用增加,全球60%后端开发人员都在使用容器 | 趋势分享
    导读:过去几年里,随着数字经济的发展,数字化转型成为企业发展的核心战略。企业上云已是大势所趋,以容器为基础的云原生理念与技术应运而生,并被用户广泛接受。基于容器、微服务、......