0
点赞
收藏
分享

微信扫一扫

递归算法leetcode.60

public static String getPermutation(int n, int k) {
       StringBuilder sb=new StringBuilder();
        List<Integer> list=new ArrayList<>();
        Collections.addAll(list,0,1,2,3,4,5,6,7,8,9);//加入0,便于操作
        rcs(n,k,sb,list);//递归
        return sb.toString();
    }

    public static void rcs(int n,int k,StringBuilder sb,List<Integer> list){
        //到最后一层直接将最小的数添加
        if(n==1) {
            sb.append(list.get(1));
            return;
        }
        //计算下一层总数,即n-1的阶乘
        int sum=1;
        for (int i = 1; i < n; i++) {
            sum*=i;
        }
        //查找该层的k对应表中第几个数,并从表中去除
        sb.append(list.remove((k-1)/sum+1));
        rcs(n-1,(k-1)%sum+1,sb,list);//进入下一层,计算k在下一层的位置
    }
举报

相关推荐

0 条评论