1. 程式人生 > 實用技巧 >leetcode——60.第K個排列

leetcode——60.第K個排列

public String getPermutation(int n, int k) {
        //itemlist 為原始順序數列
        List<Integer> itemList = new ArrayList<>();
        if(n==1){
            return "1";
        }
        //階乘資料
        List<Integer> nList = new ArrayList<>();
        nList.add(1);
        for(int i=1;i<=n;i++){
            itemList.add(i);
            
if(i>=2){ //計算階乘值 N! = n* (N-1)! int nData = nList.get(i-2); nList.add(i*nData); } } if(k > nList.get(nList.size()-1)){ return ""; } int index = n-1; k = k-1; StringBuilder itemStr
= new StringBuilder(); while(index>=0){ if(index ==0){ itemStr.append(itemList.get(0)); break; } //獲取N-1的階乘值 int result = nList.get(index-1); //獲得當前薰迴圈的第一個數字的索引 int firstIndex = k/result;
//獲取當前第一個數字 int firstNum = itemList.get(firstIndex); itemStr.append(firstNum); itemList.remove(firstIndex); index = index -1; k = k%result; } return itemStr.toString(); }

——2020.7.10