当前位置: 首页 > news >正文

LeetCode 60. 第k个排列

解题思路

这道题的做法和全排列的做法基本一致。

相关代码

class Solution {
    int t=1;  //表示的是第几个排列
    String s="";
    List<Integer> path;
    boolean st[];
    public String getPermutation(int n, int k) {
        path = new ArrayList<>();
        st = new boolean[n];
        int a[] = new int[n];
        for(int i=0;i<n;i++) a[i] = i+1;
        dfs(a,0,k,path);
        return s;
    }
    //u表示的是已经选择了u-1+1个数,目前开始选第u个数。
    //也可以理解成层数
    public void dfs(int a[],int u,int k,List<Integer> path){
        if(u==a.length){
            if(t==k)
                for(int i=0;i<path.size();i++) s=s+path.get(i);
                t++;
                return;
        }
        for(int i=0;i<a.length;i++)
            if(st[i]==false){
                st[i] = true;
                path.add(a[i]);
                dfs(a,u+1,k,path);
                path.remove(path.size()-1);
                st[i] = false;
            }
    }
}

相关文章:

  • 银行业架构网络BIAN (Banking IndustryArchitecture Network)详细介绍
  • 计算机服务器中了helper勒索病毒怎么办,helper勒索病毒解密流程步骤
  • Java游戏开发基础:从零开始搭建自己的游戏之《人生重开模拟器》简易版
  • Unity Meta Quest MR 开发(五):空间锚点
  • 挑战30天C++基本入门(DAY8--树)[part 3](速通哦~)
  • .NET 设计模式—单例模式(SingletonPattern)
  • 【Python】文件操作和异常
  • 系统地自学Python的步骤与策略
  • Git安装教程(图文安装)
  • 【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
  • Flutter Engine引擎概念
  • Filter
  • 设计模式面试题(六)
  • 设计模式:观察者模式示例
  • Linux------一篇博客了解Linux最常用的指令
  • Doris实践——信贷系统日志分析场景的实践应用
  • C++ //练习 11.18 写出第382页循环中map_it的类型,不要使用auto或decltype。
  • V3+TS(基础知识详解)
  • Golang学习系列1-pprof性能调优
  • TypeScript基础知识
  • 永辉超市回应顾客结算时被“反向抹零”:整改并补偿
  • 新华时评:需要“重新平衡”的是美国心态
  • 过去24小时中美是否就关税问题进行过接触?外交部:没有
  • 澎湃回声丨23岁小伙“被精神病”8年续:今日将被移出“重精”管理系统
  • 陕西省副省长窦敬丽已任宁夏回族自治区党委常委、统战部部长
  • 对谈|李钧鹏、周忆粟:安德鲁·阿伯特过程社会学的魅力