程序员人生 网站导航

Leetcode 60 Permutation Sequence

栏目:php教程时间:2016-09-30 11:06:45

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.

输出长度为n的数字串字典序的第K个串。

每位定下来以后,后面共有(n⑴)!个排列,应用这个特点反复减k,让k去逼近1。

class Solution { public: string getPermutation(int n, int k) { int mp[10]; mp[0]=mp[1]=1; vector<int> v(1,1); for(int i=2;i<10;i++) { mp[i]=mp[i⑴]*i; v.push_back(i); } string result; while(n--) { vector<int>::iterator it=v.begin(); while(k>mp[n]) { k-=mp[n]; it++; } result+=('0'+*it); v.erase(it); } return result; } };


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐