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 分钟前
优选算法——模拟
java·开发语言·算法·模拟
徐子童4 分钟前
ArrayList和LinkedList的区别
java·开发语言·数据结构·高频面试题
fengxin_rou5 分钟前
redis主从和集群一致性、哨兵机制详解
java·开发语言·数据库·redis·缓存
Olafur_zbj5 分钟前
【AI】LLM上下文拼接
java·开发语言·spring·llm·context
对酒当歌丶人生几何8 分钟前
Spring异步体系与事务一致性实战指南
java·spring·eventlistener
luckycoding8 分钟前
42. 接雨水
leetcode
We་ct10 分钟前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
这也能行11 分钟前
Tomcat
java·tomcat
小杍随笔11 分钟前
【Rust中所有符号的作用及使用场景详解】
java·算法·rust
亚马逊云开发者11 分钟前
别再烧 Token 了!我用这 5 个配置把 OpenClaw 费用砍了一半
java