[Leetcode]#60 Permutation Sequence
2015-09-02 07:04
489 查看
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):
Given n and k, return the kth permutation sequence.
Note: Given n will be between 1 and 9 inclusive.
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.
//#60 Permutation Sequence //4ms 28.74% class Solution { public: string getPermutation(int n, int k) { string result; if(k > getFactorial(n)) return result; vector<int> nums(n, 0); for(int i=0; i<n; i++) { nums[i] = i+1; } for(int i=0; i<n; i++) //determine the corresponding item one by one { //cout << "Current session is " << n-i << endl; //cout << "k = " << k << endl; int insert_num = (k-1) / getFactorial(n-i-1); //cout << "insert_num = " << insert_num << endl; if(insert_num > 0) { result.push_back( nums[insert_num] + '0' ); //cout << "inserting " << nums[insert_num] << " into string\n"; nums.erase(nums.begin()+insert_num); k = k - insert_num * getFactorial(n-i-1); } else { result.push_back( nums[0] + '0' ); nums.erase(nums.begin()); } } return result; } int getFactorial(int n) { if(n==1 || n==0) return 1; else return n*getFactorial(n-1); } };
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- PostgreSQL ERROR: invalid escape string 解决办法
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍
- C#实现的图片、string相互转换类分享
- asp.net String.IsNullOrEmpty 方法
- JavaScript中字符串(string)转json的2种方法
- C#中string用法实例详解
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- JavaScript中的object转换成number或string规则介绍