60. Permutation Sequence 第k個排列

題目鏈接
tag:

  • Medium哲鸳;

question:
??The set [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 for n = 3:

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

Given n and k, return the kth permutation sequence.

Note:

  • Given n will be between 1 and 9 inclusive.
  • Given k will be between 1 and n! inclusive.

Example 1:

Input: n = 3, k = 3
Output: "213"

Example 2:

Input: n = 4, k = 9
Output: "2314"

思路:
??這道題是讓求出n個數字的第k個排列組合,由于其特殊性,我們不用將所有的排列組合的情況都求出來弧圆,然后返回其第k個倡勇,我們可以只求出第k個排列組合即可痕貌,那么難點就在于如何知道數字的排列順序括丁,可參見網友喜刷刷的博客凌箕,首先我們要知道當n = 3時,其排列組合共有3! = 6種决侈,當n = 4時螺垢,其排列組合共有4! = 24種,我們就以n = 4, k = 17的情況來分析颜及,所有排列組合情況如下:
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412 <--- k = 17
3421
4123
4132
4213
4231
4312
4321

我們可以發(fā)現甩苛,每一位上1,2,3,4分別都出現了6次蹂楣,當最高位上的數字確定了俏站,第二高位每個數字都出現了2次,當第二高位也確定了痊土,第三高位上的數字都只出現了1次肄扎,當第三高位確定了,那么第四高位上的數字也只能出現一次赁酝,下面我們來看k = 17這種情況的每位數字如何確定犯祠,由于k = 17是轉化為數組下標為16:

最高位可取1,2,3,4中的一個,每個數字出現3酌呆!= 6次(因為當最高位確定了衡载,后面三位可以任意排列,所以是3隙袁!痰娱,那么最高位的數字就會重復3!次)菩收,所以k = 16的第一位數字的下標為16 / 6 = 2梨睁,在 "1234" 中即3被取出。這里我們的k是要求的坐標為k的全排列序列娜饵,我們定義 k' 為當最高位確定后坡贺,要求的全排序列在新范圍中的位置,同理,k'' 為當第二高為確定后遍坟,所要求的全排列序列在新范圍中的位置拳亿,以此類推,下面來具體看看:

第二位此時從1,2,4中取一個愿伴,k = 16风瘦,則此時的 k' = 16 % (3!) = 4,注意思考這里為何要取余公般,如果對這24個數以6個一組來分万搔,那么k=16這個位置就是在第三組(k/6 = 2)中的第五個(k%6 = 4)數字。如下所示官帘,而剩下的每個數字出現2瞬雹!= 2次,所以第二數字的下標為4 / 2 = 2刽虹,在 "124" 中即4被取出酗捌。

3124
3142
3214
3241
3412 <--- k' = 4
3421

第三位此時從1,2中去一個,k' = 4涌哲,則此時的k'' = 4 % (2!) = 0胖缤,如下所示,而剩下的每個數字出現1阀圾!= 1次哪廓,所以第三個數字的下標為 0 / 1 = 0,在 "12" 中即1被取出初烘。

3412 <--- k'' = 0
3421

第四位是從2中取一個涡真,k'' = 0,則此時的k''' = 0 % (1!) = 0肾筐,如下所示哆料,而剩下的每個數字出現0!= 1次吗铐,所以第四個數字的下標為0 / 1= 0东亦,在 "2" 中即2被取出。

3412 <--- k''' = 0

那么我們就可以找出規(guī)律了
a1 = k / (n - 1)!
k1 = k

a2 = k1 / (n - 2)!
k2 = k1 % (n - 2)!
...

an-1 = kn-2 / 1!
kn-1 = kn-2 % 1!

an = kn-1 / 0!
kn = kn-1 % 0!

代碼如下:

class Solution {
public:
    string getPermutation(int n, int k) {
        string res;
        string num = "123456789";
        vector<int> f(n, 1);
        for (int i=1; i<n; ++i)
            f[i] = f[i-1]*i;
        --k;
        for (int i=n; i>=1; --i) {
            int j = k / f[i-1];
            k %= f[i-1];
            res.push_back(num[j]);
            num.erase(j, 1);
        }
        return res;
    }
};

轉自:http://www.cnblogs.com/grandyang/p/4358678.html

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末唬渗,一起剝皮案震驚了整個濱河市典阵,隨后出現的幾起案子,更是在濱河造成了極大的恐慌谣妻,老刑警劉巖萄喳,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異蹋半,居然都是意外死亡他巨,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來染突,“玉大人捻爷,你說我怎么就攤上這事》萜螅” “怎么了也榄?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長司志。 經常有香客問我甜紫,道長,這世上最難降的妖魔是什么骂远? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任囚霸,我火速辦了婚禮,結果婚禮上激才,老公的妹妹穿的比我還像新娘拓型。我一直安慰自己,他們只是感情好瘸恼,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布劣挫。 她就那樣靜靜地躺著,像睡著了一般东帅。 火紅的嫁衣襯著肌膚如雪压固。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天冰啃,我揣著相機與錄音邓夕,去河邊找鬼刘莹。 笑死阎毅,一個胖子當著我的面吹牛,可吹牛的內容都是我干的点弯。 我是一名探鬼主播扇调,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抢肛!你這毒婦竟也來了狼钮?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捡絮,失蹤者是張志新(化名)和其女友劉穎熬芜,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體福稳,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡涎拉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鼓拧。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡半火,死狀恐怖,靈堂內的尸體忽然破棺而出季俩,到底是詐尸還是另有隱情钮糖,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布酌住,位于F島的核電站店归,受9級特大地震影響,放射性物質發(fā)生泄漏酪我。R本人自食惡果不足惜娱节,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祭示。 院中可真熱鬧肄满,春花似錦、人聲如沸质涛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汇陆。三九已至怒炸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間毡代,已是汗流浹背阅羹。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留教寂,地道東北人捏鱼。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像酪耕,于是被迫代替她去往敵國和親导梆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容

  • 在C語言中,五種基本數據類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,349評論 0 2
  • The set [1,2,3,…,n] contains a total of n! unique permuta...
    juexin閱讀 166評論 0 0
  • #熙孖抄經# 家和萬事興 房子很大,很沒有家人的和睦融融盟步,只是個屋子藏斩。 房子很小,一家人齊心協力却盘,才是個真正的家狰域。...
    心念懂你閱讀 256評論 0 2
  • 考研成績出來了窜觉,老天爺是在和我開玩笑嗎? 心比天高北专,命比紙薄
    綠水繞人家閱讀 143評論 0 0