Title Link: https://leetcode.com/problems/permutation-sequence/
Topic:
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 would be between 1 and 9 inclusive.
Ideas:
Calculate from left to right, the highest bit is calculated first. should be for k/(n-1)! , the next one should be (k% (n-1)!) /(N-2)!, and so on.
Algorithm:
Public String getpermutation (int n, int k) { int nums[] = new Int[n]; int pcount=1; for (int i=0;i<nums.length;i++) { nums[i] = i+1; Pcount *= (i+1);//n! } k--;//subscript starting from 0 String res = ""; for (int i=0;i<n;i++) { pcount/=n-i;//(n-i-1)! int r = K/pcount; res+=nums[r];//r small element for (int j=r;j<n-1-i;j++) {//Get sub R small element so the already used element is overwritten nums[j] = nums[j+1]; } K = K%pcount; } return res; }
"Leetcode" permutation Sequence