LeetCode如何解决第k个排列问题
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,小编给大家分享一下LeetCode如何解决第k个排列问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目给出集合 [1,
千家信息网最后更新 2025年01月22日LeetCode如何解决第k个排列问题
小编给大家分享一下LeetCode如何解决第k个排列问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
"123""132""213""231""312""321"
给定 n 和 k,返回第 k 个排列。
说明:
给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。
示例 1:
输入: n = 3, k = 3输出: "213"
示例 2:
输入: n = 4, k = 9输出: "2314"
思路
深度优先搜索(DFS)+ 剪枝
深度优先搜索: 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜索,以此类推。
剪枝: 在搜索中,遇到 这条路不可能和目标字符串匹配成功 的情况(例如:此矩阵元素和目标字符不同、此元素已被访问),则应立即返回,称之为 可行性剪枝 。
步骤
如果 kk 大于这一个分支将要产生的叶子结点数,直接跳过这个分支,这个操作叫「剪枝」
如果 kk 小于等于这一个分支将要产生的叶子结点数,那说明所求的全排列一定在这一个分支将要产生的叶子结点里,需要递归求解
代码
class Solution { public String getPermutation(int n, int k) { //初始化阶乘数组 int[] factorial = new int[n+1]; calculateFactorial(factorial,n); //查找全排列的布尔数组 boolean[] temp = new boolean[n+1]; Arrays.fill(temp,false); //动态字符串 StringBuilder path = new StringBuilder(); dfs(temp,factorial,0,path,k,n); return path.toString(); } private void dfs(boolean[] temp,int factorial[],int index,StringBuilder path,int k,int n){ if(index == n){ return; } //全排列个数 int cnt = factorial[n-1-index]; for(int i = 1; i <= n; i++){ if(temp[i]){ continue; } //当时全排列个数 if(cnt < k){ k -= cnt; continue; } path.append(i); temp[i] = true; dfs(temp,factorial,index+1,path,k,n); return; } } //计算阶乘数组 private void calculateFactorial(int[] factorial, int n){ factorial[0] = 1; for(int i = 1; i <= n; i++){ factorial[i] = factorial[i-1]*i; } }}
以上是"LeetCode如何解决第k个排列问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
分支
字符
搜索
元素
叶子
字符串
数组
篇文章
问题
个数
内容
情况
方向
深度
点数
目标
矩阵
示例
范围
阶乘
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家网络安全中心
服务器flag是什么意思
长安汽车连不到服务器
软件开发需要做哪些图
嘉兴市网络安全宣讲周
中职网络安全自查报告
笔记本可以外接服务器吗
网络安全和云计算出现断层
无锡网络安全准入控制哪家好
党员网络安全自查
网络安全致家长的一封信简报
自己做数据库需要什么
2k22显示2k服务器不可用
国家网络技术排行
网络安全与生活简答题
dt网络安全
凭祥管理软件开发
中专学计算机维修还是网络技术好
sql 服务器名称怎么填
漯河互联网科技公司
服务器电源450w实际耗电量
数据库查询50道题
三星s8网络安全在哪
局域网广域网同时使用的网络技术
确保奥运会网络安全的具体措施
全完善网络安全管理制度
gps北斗双系统时钟同步服务器
美国网络安全技术促进措施
神器官服32区服务器叫什么
BILIBILI下载软件开发