package com.patience.interview.algorithms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* 算法 整数数列排序所有可能
* @author Green.Gee
* @date 2022/3/4 17:38
* @email green.gee.lu@gmail.com
*/
public class SolveQ1 {
/**
* 数字N(整数)的所有位数排列组合
* 比如 N = 123
* 所有排列组合
* 123
* 132
* 213
* 231
* 312
* 321
* 取所有有序排列集合中的k的排列
* 比如以上队列中
* k = 2
* 结果 = 132
*
*/
// result list
static List<String> results = new ArrayList<>();
public static void main(String[] args) {
int n = 122,k = 2;
char [] cs = (n + "").toCharArray();
Arrays.sort(cs);
permutations(cs,0,cs.length - 1);
if(k > results.size()){
System.out.println("N");
}else
System.out.println(results.get(k - 1));
}
public static void permutations(char []a,int m,int n) {
if (m == n) {
String num = "";
for (int i = 0; i <= n; i++) {
num += a[i];
}
if(!results.contains(num)){
results.add(num);
}
} else {
for (int i = m; i <= n; i++) {
char temp = a[m];
a[m] = a[i];
a[i] = temp;
permutations(a, m + 1, n);
temp = a[m];
a[m] = a[i];
a[i] = temp;
}
}
}
}
数字 N(整数)的所有位数排列组合【递归】
于 2022-03-04 18:49:57 首次发布