LeetCode_Permutation Sequence
来源:互联网 发布:狼居胥山在哪 知乎 编辑:程序博客网 时间:2024/06/07 07:12
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.
string getPermutation2(int n, int k) {string ans;ans.resize(n);bool used[10];memset(used, 0, sizeof(used));// 用0到n-1代表(1,n)for (int i = n; i <= 9; ++i){used[i] = true;}int count = 1;for (int i = 1; i <= n - 1; ++i){count *= i;}int num = 0;--k;while (k){int index = k / count;int visited = 0;for (int i = 0; i < n; ++i){if (!used[i]){if (visited == index){ans[num++] = i + '0' + 1;used[i] = true;break;}else{++visited;}}}k = k % count;if (k == 0)break;count = count / (n - num);}if (num < n){for (int i = 0; i < n; ++i){if (!used[i]){ans[num++] = i + '0' + 1;}}} return ans;}
void nextPermutation(vector<int> &num) {int size = num.size();if (size == 0)return;int i = size - 2;for (; i >= 0; --i){if (num[i] < num[i+1])break;}if (i == -1){for (int i = 0; i < (size >> 1); ++i){swap(num[i], num[size - 1 - i]);}return;}int j = size - 1;int minNum = num[i + 1];int index = i + 1;for (; j > i; --j){if (num[j] > num[i]){if (num[j] < minNum){minNum = num[j];index = j;}}}swap(num[i], num[index]);sort(num.begin() + i + 1, num.end());}
- LeetCode_Permutation Sequence
- leetCode_Permutation Sequence
- Leetcode_permutation-sequence(c++ and python version)
- sequence
- SEQUENCE
- Sequence
- sequence
- sequence
- Sequence
- sequence
- sequence
- sequence
- Sequence
- Sequence
- Sequence
- Sequence
- sequence
- sequence
- ubuntu12.04下vim基本配置自动换行括号自动补齐显示行号等
- englist
- 数据库迁移
- BCGControlBar支持中文的问题
- Jmeter Summariser report及其可视化
- LeetCode_Permutation Sequence
- 局域网实时通讯工具
- 杭电NEU 动规专题 Q
- 使用Create出现WSAEADDRINUSE错误的解决办法
- 动态规划小结
- asp.net 同一个页面中如何保持变量的值在多个事件中变换???
- 计算的力量:钱难挣,屎难吃
- VMware无法识别USB设备的解决方法
- SQL显示表子段信息的语句