LeetCode: Permutation Sequence

这题的难度在编程,一开始想到的dfs过不了large,第二次想到网上的正确答案的思路,不过没有编出来,然后只好找答案了

 1 class Solution {
 2 public:
 3     string getPermutation(int n, int k) {
 4         // Start typing your C/C++ solution below
 5         // DO NOT write int main() function
 6         string ret = "";
 7         int time = 1;
 8         for (int i = 1; i <= n; i++) {
 9             ret += (char)('0'+i);
10             time *= i;
11         }
12         k--;
13         k %= time;
14         time /= n;
15         for (int i = 0; i < n-1; i++) {
16             int select = k / time;
17             k %= time;
18             time /= n - i - 1;
19             int tmp = ret[i + select];
20             for (int j = select; j > 0; j--) ret[i+j] = ret[i+j-1];
21             ret[i] = tmp;
22         }
23         return ret;
24     }
25 };
原文地址:https://www.cnblogs.com/yingzhongwen/p/3030343.html