好贷网好贷款

LeetCode 60: Permutation Sequence

发布时间:2016-12-4 5:53:33 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"LeetCode 60: Permutation Sequence",主要涉及到LeetCode 60: Permutation Sequence方面的内容,对于LeetCode 60: Permutation Sequence感兴趣的同学可以参考一下。

Difficulty: 5 Frequency: 1 Problem: 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): "123" "132" "213" "231" "312" "321" Given n and k, return the kth permutation sequence. Note: Given n will be between 1 and 9 inclusive. Solution: class Solution { public: string getPermutation(int n, int k) { // Start typing your C/C++ solution below // DO NOT write int main() function string str_answer; if (n==1) { str_answer = "1"; return str_answer; } vector<char> v_answer; for (int i = 1; i<=n; i++) { v_answer.push_back('0'+i); } int i_factorial = 1; for (int i = 2; i<=n-1; i++) { i_factorial *= i; } int i_bit_num = 0; --k; int i_time = n-1; while(n-1-i_bit_num>0) { int i_exchange = k/i_factorial; char c_temp = v_answer[i_bit_num+i_exchange]; for (int i = i_bit_num+i_exchange; i>i_bit_num; i--) { v_answer[i] = v_answer[i-1]; } v_answer[i_bit_num] = c_temp; k %= i_factorial; i_factorial /= (n-1-i_bit_num); i_bit_num++; } for (int i = 0; i<v_answer.size(); i++) { str_answer += v_answer[i]; } return str_answer; } }; Notes:

上一篇:温故一下Linux CentOS的VI/VIM命令
下一篇:POJ1696-凸包

相关文章

相关评论