多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Leetcode--Permutation Sequence

Leetcode--Permutation Sequence

來源:程序員人生   發布時間:2014-09-08 08:58:35 閱讀次數:3434次

Problem Description:

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 (ie, 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.

分析:

首先想到的暴力法,逐個的求排列,直到找到第k個排列,提交之后會超時,在網上搜索之后發現可以直接構造出第k個排列,以n = 4,k = 17為例,數組src = [1,2,3,...,n]。

第17個排列的第一個數是什么呢:我們知道以某個數固定開頭的排列個數 = (n-1)! = 3! = 6, 即以1和2開頭的排列總共6*2 = 12個,12 < 17, 因此第17個排列的第一個數不可能是1或者2,6*3 > 17, 因此第17個排列的第一個數是3。即第17個排列的第一個數是原數組(原數組遞增有序)的第m = upper(17/6) = 3(upper表示向上取整)個數。                                       

第一個數固定后,我們從src數組中刪除該數,那么就相當于在當前src的基礎上求第k - (m-1)*(n-1)! = 17 - 2*6 = 5個排列,因此可以遞歸的求解該問題。

代碼實現中注意一個小細節,就是一開始把k--,目的是讓下標從0開始,這樣下標就是從0到n-1,不用考慮n時去取余,更好地跟數組下標匹配。具體代碼如下:

class Solution { public: int fun(int n) { if(n<0) return 0; else if(n==0) return 1; else return n*fun(n-1); } string getPermutation(int n, int k) { string s; int total=fun(n); if(total<k) return s; vector<int> flag(n,0); //因為數組是從0到n-1的,所以基數從0到k-1 --k; for(int i=0;i<n;i++) flag[i]=i+1; for(int i=0;i<n;i++) { total/=(n-i); int index=k/total; s.push_back('0'+flag[index]); for(int j=index;j<n-i-1;j++) flag[j]=flag[j+1]; k -= index*total; } return s; } };



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美日本黄色片 | 午夜视频在线观看网站 | 69视频日本 | 国产jizz美国jizz免费看 | 欧美另类视频一区二区三区 | 精品91一区二区三区 | 亚洲中午字幕 | 欧美精品亚洲精品日韩 | 最新亚洲国产有精品 | 一区二区三区在线免费 | 欧美性xxxx| 黄色www网站 | 亚洲三级a| 日本综合欧美一区二区三区 | xxxx18日本护士hd | 欧美高清精品 | 亚洲资源在线播放 | 老司机午夜精品视频播放 | 日本护士高清xxxxx | 国产欧美一区二区精品久久久 | 一级特黄aa大片免费 | 日本在线一区二区三区 | 最近更新在线中文字幕一页 | 欧美日韩福利视频一区二区三区 | 国产操女 | 欧美一级人与动毛片免费播放 | 欧美同志的免费video | 色综合天天综合网亚洲 | 亚洲欧洲日产国码二区首页 | 日本在线www | 国产欧美日韩高清专区手机版 | 92看片淫黄大片看国产片 | 黄色网址在线免费 | 亚洲小视频在线观看 | 成人免费精品视频 | 上海一级毛片 | 国产一区二区高清视频 | 国产精品www | 久久人人澡 | 特级做a爰片毛片免费看一区 | 国产精品视频分类 |