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 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.
Given k will be between 1 and n! inclusive.
Example 1:
Input: n = 3, k = 3
Output: “213”
Example 2:
Input: n = 4, k = 9
Output: “2314”
factors := make([]int, 10, 10)
nums := make([]int, 9, 9)
res := ""
factors[0] = 1
nums[0] = 1
for i := 1; i < 9; i++ {
factors[i] = factors[i-1] * i
nums[i] = i + 1
}
k--
for i := n; i >= 1; i-- {
rs := k / factors[i-1]
fmt.Println(nums[rs], reflect.TypeOf(string(nums[rs])))
k %= factors[i-1]
res += string(nums[rs] + '0')
nums = append(nums[:rs], nums[rs+1:]...)
}
return res