LeetCode 60: Permutation Sequence

发布时间:2014-10-22 14:24:39编辑: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-凸包

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款