首页 > 代码库 > LeetCode 59 Permutation Sequence
LeetCode 59 Permutation Sequence
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.
思路,使用字典序法,与http://blog.csdn.net/mlweixiao/article/details/38897499
public class Solution { private void nextPermutation(int[] num) { int i; int cur = -1; int temp; // find the last increase sequence for (i = num.length - 1; i >= 1; i--) { if (num[i] > num[i - 1]) { cur = i - 1; break; } } // if the increase sequence exists, // swap the cur and the last one(bigger than it) if (cur != -1) { for (i = num.length - 1; i > cur; i--) { if (num[i] > num[cur]) { temp = num[cur]; num[cur] = num[i]; num[i] = temp; break; } } } for (i = cur + 1; 2 * i <= cur + num.length - 1; i++) { temp = num[i]; num[i] = num[num.length - i + cur]; num[num.length - i + cur] = temp; } } public String getPermutation(int n, int k) { int [] temp=new int[n]; StringBuffer s=new StringBuffer(""); for(int i=0;i<n;i++){ temp[i]=i+1; } for(int i=1;i<k;i++){ nextPermutation(temp); } for(int i=0;i<n;i++){ s.append(temp[i]); } return s.toString(); } }
LeetCode 59 Permutation Sequence
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。