Java | Leetcode Java题解之第60题排列序列

题目:

题解:

java 复制代码
class Solution {
    public String getPermutation(int n, int k) {
        int[] factorial = new int[n];
        factorial[0] = 1;
        for (int i = 1; i < n; ++i) {
            factorial[i] = factorial[i - 1] * i;
        }

        --k;
        StringBuffer ans = new StringBuffer();
        int[] valid = new int[n + 1];
        Arrays.fill(valid, 1);
        for (int i = 1; i <= n; ++i) {
            int order = k / factorial[n - i] + 1;
            for (int j = 1; j <= n; ++j) {
                order -= valid[j];
                if (order == 0) {
                    ans.append(j);
                    valid[j] = 0;
                    break;
                }
            }
            k %= factorial[n - i];
        }
        return ans.toString();
    }
}
相关推荐
白露与泡影1 分钟前
从 BIO 到 epoll:高并发 I/O 模型演进与本质分析
java·服务器·数据库
学编程就要猛3 分钟前
JavaEE进阶:Spring Boot快速上手
java·spring boot·java-ee
小肝一下10 分钟前
每日两道力扣,day1
算法·leetcode·职场和发展
csdn2015_12 分钟前
HashSet 和 LinkedHashSet 区别
java·开发语言
KoiHeng12 分钟前
初识Maven
java·maven
im_AMBER13 分钟前
Leetcode 151 最大正方形 | 买卖股票的最佳时机 III
数据结构·算法·leetcode·动态规划
Fly Wine14 分钟前
Leetcode之简单题:在区间范围内统计奇数数目
算法·leetcode·职场和发展
一生了无挂15 分钟前
springboot使用logback自定义日志
java·spring boot·logback
江不清丶15 分钟前
生产实战:系统频繁Full GC,如何一步步定位与解决?
java·jvm